{
  "openapi": "3.1.0",
  "info": {
    "title": "本地 API",
    "description": "MoreLogin API 提供全面且对开发者友好的 RESTful 接口，使您能够以编程方式管理浏览器环境、云手机及相关资源，实现无缝自动化、可扩展性和控制。MoreLogin 本地 API 运行在您的计算机上，可通过 127.0.0.1:40000 访问",
    "version": "2026-09-05"
  },
  "servers": [
    {
      "url": "http://127.0.0.1:40000",
      "description": "Local API"
    }
  ],
  "tags": [
    {
      "name": "Profiles",
      "description": "Profiles 相关 API。"
    },
    {
      "name": "Runtime",
      "description": "Runtime 相关 API。"
    },
    {
      "name": "Cloud Runtime",
      "description": "Cloud Runtime 相关 API。"
    },
    {
      "name": "Fingerprint & Device Config",
      "description": "Fingerprint & Device Config 相关 API。"
    },
    {
      "name": "Cache & Window",
      "description": "Cache & Window 相关 API。"
    },
    {
      "name": "Proxy Management",
      "description": "Proxy Management 相关 API。"
    },
    {
      "name": "Group Management",
      "description": "Group Management 相关 API。"
    },
    {
      "name": "Tag Management",
      "description": "Tag Management 相关 API。"
    }
  ],
  "x-tagGroups": [
    {
      "name": "",
      "tags": [
        "Profiles",
        "Runtime",
        "Cloud Runtime",
        "Fingerprint & Device Config",
        "Cache & Window"
      ]
    }
  ],
  "paths": {
    "/api/env/start": {
      "post": {
        "summary": "启动浏览器",
        "operationId": "startBrowserProfileUsingPOST",
        "deprecated": false,
        "description": "用于启动浏览器；您必须指定配置文件 ID。\n\n启动成功后，您可以获取浏览器调试界面，用于\n执行 Selenium 和 Puppeteer 自动化脚本。对于 Selenium，请使用\n与相应内核版本匹配的 WebDriver。WebDriver 路径\n可以从配置文件启动后的响应中获取。需要\nMoreLogin 客户端版本 2.15.0 或更高版本。\n\n已记录的业务错误码：`19099`, `19143`。 各错误码的含义见 [Error Codes](../Getting%20Started/error-codes.md)。任何接口还可能返回通用错误码。",
        "tags": [
          "Runtime"
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "envId": {
                    "type": "string",
                    "description": "环境 ID。必须提供 `envId` 或 `uniqueId` 中的一个。\n\n如果同时提供了这两个 ID，则以 `envId` 为准。\n\n",
                    "example": "1993244721490239488"
                  },
                  "uniqueId": {
                    "type": "integer",
                    "description": "环境序列号（小整数 ID）。必须提供 `envId` 或 `uniqueId` 中的一个。\n\n如果两者都提供了，则 `envId` 优先。\n\n",
                    "example": 1
                  },
                  "encryptKey": {
                    "type": "string",
                    "description": "加密密钥。仅当环境启用端到端加密时才需要。\n\n",
                    "example": "xxx"
                  },
                  "isHeadless": {
                    "type": "boolean",
                    "description": "是否以无头模式启动。如果省略，则默认为 `false`。\n\n注意：需要客户端版本 v2.36.0 或更高版本。\n\n",
                    "default": false,
                    "example": false
                  },
                  "cdpEvasion": {
                    "type": "boolean",
                    "description": "启用 CDP 指纹规避功能以降低检测风险。\n\n仅适用于 PC 环境。\n\n默认值：`false`。\n\n注意：需要客户端版本 v2.36.0 或更高版本。\n\n",
                    "default": false,
                    "example": false
                  },
                  "closeCheckIPPage": {
                    "type": "boolean",
                    "description": "是否跳过打开检测页面。\ntrue：执行前进行代理检测\nfalse：执行后进行代理检测\n注意：需要客户端 v2.56.0 及以上版本。",
                    "default": false,
                    "example": false
                  },
                  "checkIPErrorHandle": {
                    "type": "integer",
                    "description": "代理检测失败时采取的动作\n数字类型：1 或 2\n1：代理检测失败则不启动环境\n2：代理检测失败也启动环境\n若已传入 closeCheckIPPage，则忽略本参数；默认值：1\n注意：需要客户端 v2.56.0 及以上版本。",
                    "default": 1,
                    "example": 1
                  }
                }
              },
              "example": {
                "envId": "1993244721490239488",
                "isHeadless": false,
                "cdpEvasion": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "成功。`data` 是对象，包含字段 `envId`、`debugPort`、`type`、`version`、`webdriver`。",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer"
                    },
                    "msg": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "data": {
                      "type": "object",
                      "properties": {
                        "envId": {
                          "type": "string",
                          "description": "轮廓"
                        },
                        "debugPort": {
                          "type": "string"
                        },
                        "type": {
                          "type": "string"
                        },
                        "version": {
                          "type": "integer"
                        },
                        "webdriver": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "envId",
                        "debugPort",
                        "type",
                        "version",
                        "webdriver"
                      ]
                    },
                    "requestId": {
                      "type": "string",
                      "description": "请求唯一标识；联系支持时请提供"
                    }
                  },
                  "required": [
                    "data"
                  ]
                },
                "example": {
                  "code": 0,
                  "msg": null,
                  "data": {
                    "envId": "1673823102599682",
                    "debugPort": "9222",
                    "type": "string",
                    "version": 1,
                    "webdriver": "string"
                  },
                  "requestId": "0d8b6f1c-9f4e-4d02-9d1a-7c3f5a1b2c3d"
                }
              }
            },
            "headers": {}
          }
        },
        "security": []
      }
    },
    "/api/env/close": {
      "post": {
        "operationId": "closeBrowserProfileLocal",
        "summary": "关闭浏览器",
        "deprecated": false,
        "description": "关闭一个正在运行的浏览器环境。\n\n- **执行位置**：完全由 MoreLogin 桌面客户端在你本机处理。**服务端没有对应实现**，因此除了客户端已打开该环境外没有任何账号、团队或状态前置条件，云端也不会留下记录。\n- **副作用**：仅限本地浏览器进程与窗口。环境数据、指纹与云端缓存都不受影响。\n- **完成信号**：同步——客户端执行完毕即返回。\n- **可用面**：仅 Local API。Open API 没有对应接口，因为它没有可操作的本地浏览器；请改用云运行时相关接口。\n- **说明**：由于该能力归客户端所有，响应结构取决于已安装的客户端版本，而非服务端契约。",
        "tags": [
          "Runtime"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "envId": {
                    "description": "环境 ID 或序列号——至少需要提供其中一个；如果两者都提供，则环境 ID 优先。",
                    "type": "string"
                  },
                  "uniqueId": {
                    "description": "环境序列号——必须提供“envId”或“uniqueId”中的一个；如果两者都提供，“envId”优先。",
                    "type": "integer"
                  }
                }
              },
              "example": {
                "envId": "1869649942658850816",
                "uniqueId": 0
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "成功。`data` 是对象，包含字段 `envId`、`debugPort`。",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer"
                    },
                    "msg": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "data": {
                      "type": "object",
                      "properties": {
                        "envId": {
                          "type": "string"
                        },
                        "debugPort": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "envId",
                        "debugPort"
                      ]
                    },
                    "requestId": {
                      "type": "string",
                      "description": "请求唯一标识；联系支持时请提供"
                    }
                  },
                  "required": [
                    "code",
                    "msg",
                    "data"
                  ]
                },
                "example": {
                  "code": 0,
                  "msg": null,
                  "data": {
                    "envId": "1673823102599682",
                    "debugPort": "9222"
                  },
                  "requestId": "0d8b6f1c-9f4e-4d02-9d1a-7c3f5a1b2c3d"
                }
              }
            },
            "headers": {}
          }
        },
        "security": []
      }
    },
    "/api/env/create/quick": {
      "post": {
        "operationId": "createBrowserProfileQuickLocal",
        "summary": "快速创建浏览器",
        "deprecated": false,
        "description": "批量创建 1 到 200 个配置相同的浏览器。\n\n- **前置条件**：团队套餐必须有足够的剩余浏览器额度，且当日创建配额未用尽。`isEncrypt=1` 要求团队已配置加密密钥。Firefox 仅在 Windows 与 macOS 上可用。`groupId` 必须已存在，但改传 `groupName` 会自动创建分组。\n- **副作用**：写入浏览器，消耗套餐额度并递增当日创建计数。传入代理连接信息还可能创建一条代理记录。\n- **完成信号**：同步。`data` 是新建浏览器的 ID，按创建顺序排列。\n- **重试**：不幂等，也没有幂等键。请用 `/env/page` 确认，而不是重试。\n- **Local API**：内核候选集会按运行中的桌面客户端版本过滤，且同一团队的并发调用会被团队级锁串行化。\n\n已记录的业务错误码：`19002`, `19063`, `19064`, `19104`, `19106`, `19107`, `19108`, `19111`, `19112`, `14023`。 各错误码的含义见 [Error Codes](../Getting%20Started/error-codes.md)。任何接口还可能返回通用错误码。",
        "tags": [
          "Profiles"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "browserTypeId": {
                    "description": "1：Chrome浏览器，2：Firefox浏览器",
                    "type": "integer",
                    "example": 1
                  },
                  "groupId": {
                    "description": "环境组 ID；默认值：未分组 (0)",
                    "type": "string",
                    "example": "0"
                  },
                  "groupName": {
                    "description": "分组名称（最多50个字符）。如果提供了该参数，系统会先检查 groupId：如果找到有效分组则使用该分组；否则按 groupName 查找。如果存在同名分组则引用该分组；如果不存在则新建分组。每个团队最多限制1000个分组。",
                    "type": "string",
                    "maxLength": 50,
                    "example": ""
                  },
                  "isEncrypt": {
                    "description": "启用端到端加密？0：否，1：是；默认值：0",
                    "type": "integer"
                  },
                  "operatorSystemId": {
                    "description": "操作系统类型：1. Windows，2. macOS，3. Android，4. iOS",
                    "type": "integer",
                    "example": 1
                  },
                  "quantity": {
                    "description": "要创建的环境数量；范围：[1–50]",
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 50,
                    "example": 1
                  },
                  "browserCore": {
                    "description": "浏览器内核版本；默认值：0（自动匹配）。可通过“/api/env/advanced/ua/versions”获取可用版本。",
                    "type": "integer",
                    "example": 140
                  },
                  "proxy": {
                    "type": "object",
                    "properties": {
                      "proxyId": {
                        "description": "代理 ID",
                        "type": "string"
                      },
                      "proxyName": {
                        "description": "代理名称（最多 600 个字符）",
                        "type": "string"
                      },
                      "proxyType": {
                        "description": "代理类型，0：http，1：https。当 proxyProvider 为 7/8 时，此值不能为空。",
                        "type": "integer"
                      },
                      "proxyProvider": {
                        "description": "代理提供商：0：http，1：https，2：socks5，3：ssh，4：Oxylabs，5：Proxys.io，7：Luminati，8：Lumauto，9：Oxylabsauto，10：Trojan，11：Shadowsocks，13：ABCPROXY，14：LunaProxy，15：IPHTML，16：PiaProxy，17：922S5，18：360Proxy",
                        "type": "string"
                      },
                      "proxyIp": {
                        "description": "代理 IP 地址。当 proxyProvider 为 16/17/18 时可以为空；其他情况下为必填项。",
                        "type": "string"
                      },
                      "proxyPort": {
                        "description": "代理端口（仅允许使用 1-65535 之间的数字）。当 proxyProvider 为 16/17/18 时，此参数可以为空；其他情况下为必填项。",
                        "type": "integer"
                      },
                      "username": {
                        "description": "用户名（最多 200 个字符）",
                        "type": "string"
                      },
                      "password": {
                        "description": "密码（最多 100 个字符）",
                        "type": "string"
                      },
                      "refreshUrl": {
                        "description": "刷新网址",
                        "type": "string"
                      },
                      "country": {
                        "description": "国家/地区（具体国家/地区代码见附录）。当 proxyProvider 为 16/17/18 时为必填项。",
                        "type": "string"
                      },
                      "city": {
                        "description": "城市",
                        "type": "string"
                      },
                      "state": {
                        "description": "州/省",
                        "type": "string"
                      },
                      "encryptionType": {
                        "description": "加密方法。当 proxyProvider 为 11 时，此参数不能为空。1：aes-128-gcm，2：aes-192-gcm，3：aes-256-gcm，4：aes-128-cfb，5：aes-192-cfb，6：aes-256-cfb，7：aes-128-ctr，8：aes-192-ctr，9：aes-256-ctr，10：rc4-md5，11：chacha20-ietf，12：xchacha20，13：chacha20-ietf-poly1305，14：xchacha20-ietf-poly1305",
                        "type": "integer"
                      },
                      "ipMonitor": {
                        "description": "启用 IP 地址变更监控？true：开启，false：关闭",
                        "type": "boolean"
                      },
                      "ipChangeAction": {
                        "description": "IP地址变更监控：0：阻止访问，1：警告",
                        "type": "integer"
                      }
                    },
                    "description": "代理人"
                  }
                },
                "required": [
                  "browserTypeId",
                  "operatorSystemId",
                  "quantity"
                ]
              },
              "example": {
                "browserTypeId": 1,
                "operatorSystemId": 1,
                "quantity": 1
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "成功。`data` 是字符串数组；无数据时返回空数组。",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer"
                    },
                    "msg": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "requestId": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "code",
                    "msg",
                    "data",
                    "requestId"
                  ]
                },
                "example": {
                  "code": 0,
                  "msg": null,
                  "data": [
                    "string"
                  ],
                  "requestId": "0d8b6f1c-9f4e-4d02-9d1a-7c3f5a1b2c3d"
                }
              }
            },
            "headers": {}
          }
        },
        "security": []
      }
    },
    "/api/env/create/advanced": {
      "post": {
        "operationId": "createBrowserProfileAdvancedLocal",
        "summary": "高级创建浏览器",
        "deprecated": false,
        "description": "创建一个浏览器，并指定完整的指纹配置。\n\n- **前置条件**：与快速创建相同的套餐额度与当日配额校验。浏览器名称在团队内必须唯一，坐标必须落在中国大陆以外，且 `advancedSetting.ua` 必须与 `uaVersion` 一致。传入的 `proxyId` 必须已存在于团队中。\n- **副作用**：写入浏览器、其账号凭据（加密存储）和启动后配置；消耗套餐额度与当日创建计数。自定义平台 URL 还会新增一条站点记录。\n- **完成信号**：同步。`data` 是新建浏览器的 ID。\n- **重试**：不幂等。显式传了相同 `envName` 的第二次调用会因唯一性校验失败；不传名称则会重复创建。没有幂等键。超时后不要盲目重试，先查询状态。\n- **Local API**：内核候选集会按运行中的桌面客户端版本过滤，且同一团队的并发调用会被团队级锁串行化。\n\n已记录的业务错误码：`19001`, `19002`, `19004`, `19005`, `19063`, `19064`, `19100`, `19101`, `19102`, `19103`, `19104`, `19105`, `19106`, `19107`, `19108`, `19109`, `19110`, `19111`, `19112`, `19141`, `19175`。 各错误码的含义见 [Error Codes](../Getting%20Started/error-codes.md)。任何接口还可能返回通用错误码。",
        "tags": [
          "Profiles"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateEnvironmentRequest"
              },
              "example": {
                "browserTypeId": 1,
                "operatorSystemId": 1,
                "isEncrypt": 1
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "成功。`data` 是单个字符串值。",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer"
                    },
                    "msg": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "data": {
                      "type": "string"
                    },
                    "requestId": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "code",
                    "msg",
                    "data",
                    "requestId"
                  ]
                },
                "example": {
                  "code": 0,
                  "msg": null,
                  "data": "string",
                  "requestId": "0d8b6f1c-9f4e-4d02-9d1a-7c3f5a1b2c3d"
                }
              }
            },
            "headers": {}
          }
        },
        "security": []
      }
    },
    "/api/env/update": {
      "post": {
        "operationId": "updateBrowserProfileLocal",
        "summary": "修改浏览器",
        "deprecated": false,
        "description": "更新已有的浏览器。只修改请求中出现的字段。\n\n- **前置条件**：浏览器必须存在于团队中。端到端加密的浏览器不可更新。操作系统与浏览器类型不可更改。运行中的浏览器可以更新。\n- **副作用**：写入浏览器主记录、其扩展设置与 Cookie，并合并高级指纹设置（未被覆盖的已有值保留）。\n- **完成信号**：同步。\n- **重试**：相同请求体可安全重复。注意没有乐观锁：对同一浏览器的并发更新是后写覆盖，且指纹合并是先读后写，因此并发调用可能丢失变更。\n\n已记录的业务错误码：`19001`, `19039`, `19104`, `19105`, `19106`, `19107`, `19108`, `19142`, `19159`, `19160`, `19175`, `19193`。 各错误码的含义见 [Error Codes](../Getting%20Started/error-codes.md)。任何接口还可能返回通用错误码。",
        "tags": [
          "Profiles"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateEnvironmentRequest"
              },
              "example": {
                "browserTypeId": 1,
                "operatorSystemId": 1,
                "isEncrypt": 1,
                "envId": "1661515884160372"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "成功。该接口的 `data` 恒为 null，结果由 `code` 表达。",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer"
                    },
                    "msg": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "data": {
                      "type": "null"
                    },
                    "requestId": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "code",
                    "msg",
                    "data",
                    "requestId"
                  ]
                },
                "example": {
                  "code": 0,
                  "msg": null,
                  "data": null,
                  "requestId": "0d8b6f1c-9f4e-4d02-9d1a-7c3f5a1b2c3d"
                }
              }
            },
            "headers": {}
          }
        },
        "security": []
      }
    },
    "/api/env/removeToRecycleBin/batch": {
      "post": {
        "summary": "删除浏览器",
        "operationId": "batchDeleteBrowserProfilesUsingPOST",
        "deprecated": false,
        "description": "把一个或多个浏览器移入回收站。\n\n- **前置条件**：浏览器不能已在回收站中，不能正在运行，也不能处于转移中。请先关闭浏览器。\n- **副作用**：软删除。数据行、指纹和云端缓存都保留，浏览器被标记为已回收并记录时间戳。套餐额度立即释放，但当日创建计数不会退回。\n- **完成信号**：同步。\n- **恢复**：从回收站恢复的能力未在接口层开放——请使用 MoreLogin 客户端或网页控制台。\n- **重试**：重复调用会报该浏览器已删除，不会重复删除。",
        "tags": [
          "Profiles"
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "envIds"
                ],
                "properties": {
                  "envIds": {
                    "type": "array",
                    "description": "要删除的环境（浏览器）ID列表。",
                    "items": {
                      "type": "string",
                      "example": "1868548141708648448"
                    },
                    "minItems": 1,
                    "example": [
                      "1868548141708648448",
                      "1868548141708648449"
                    ]
                  },
                  "removeEnvData": {
                    "type": "boolean",
                    "description": "同时删除本地浏览器环境？\n\nv2.28.0 及更高版本支持此功能。\n\n",
                    "default": false,
                    "example": false
                  }
                }
              },
              "example": {
                "envIds": [
                  "1868548141708648448"
                ],
                "removeEnvData": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "成功。`data` 是单个布尔值。",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer"
                    },
                    "msg": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "data": {
                      "type": "boolean"
                    },
                    "requestId": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "code",
                    "msg",
                    "data",
                    "requestId"
                  ]
                },
                "example": {
                  "code": 0,
                  "msg": null,
                  "data": true,
                  "requestId": "0d8b6f1c-9f4e-4d02-9d1a-7c3f5a1b2c3d"
                }
              }
            },
            "headers": {}
          }
        },
        "security": []
      }
    },
    "/api/env/page": {
      "post": {
        "summary": "获取浏览器列表",
        "operationId": "listBrowserProfilesUsingPOST",
        "deprecated": false,
        "description": "分页列出当前认证成员可见的浏览器。\n\n- **副作用**：无。只读。可带退避安全重试。\n- **筛选**：`keyword` 匹配浏览器名称、备注、标签名与分组名。`groupId` 为 `0` 表示未分组。\n- **说明**：普通成员、以及平台代理和动态代理的密码不会返回。",
        "tags": [
          "Profiles"
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "envName": {
                    "type": "string",
                    "description": "按环境（配置文件）名称筛选。空字符串返回所有环境。",
                    "example": ""
                  },
                  "groupId": {
                    "type": "string",
                    "description": "按组 ID 筛选。未分组的浏览器环境使用 0。",
                    "default": 0,
                    "example": "0"
                  },
                  "envId": {
                    "type": "string",
                    "description": "按特定环境 ID 筛选。\n\n如果提供环境 ID，则其他筛选条件可能被忽略。\n\n",
                    "example": "1869988538611834880"
                  },
                  "pageNo": {
                    "type": "integer",
                    "description": "页码（从 1 开始索引）。",
                    "default": 1,
                    "minimum": 1,
                    "example": 1
                  },
                  "pageSize": {
                    "type": "integer",
                    "description": "每页显示项目数。",
                    "default": 10,
                    "minimum": 1,
                    "maximum": 100,
                    "example": 10
                  }
                }
              },
              "example": {
                "pageNo": 1,
                "pageSize": 10
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "成功。`data.dataList` 是当前页的记录，无匹配结果时为空数组；`data.total`、`data.current`、`data.pages` 描述分页信息。",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer"
                    },
                    "msg": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "data": {
                      "type": "object",
                      "properties": {
                        "total": {
                          "type": "string"
                        },
                        "current": {
                          "type": "string"
                        },
                        "pages": {
                          "type": "string"
                        },
                        "dataList": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string",
                                "description": "浏览器配置文件 ID"
                              },
                              "envName": {
                                "type": "string",
                                "description": "配置文件名称"
                              },
                              "groupId": {
                                "type": "string",
                                "description": "分组 ID"
                              },
                              "groupName": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "description": "分组名称；未分组时为 `null`"
                              },
                              "tagInfos": {
                                "type": "array",
                                "description": "标签信息；无标签时返回空数组",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string",
                                      "description": "标签 ID"
                                    },
                                    "tagName": {
                                      "type": "string",
                                      "description": "标签名称"
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "tagName"
                                  ]
                                }
                              },
                              "envRemark": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "description": "环境备注"
                              },
                              "proxyId": {
                                "type": "string",
                                "description": "代理 ID。`0` 表示无代理"
                              },
                              "proxy": {
                                "type": [
                                  "object",
                                  "null"
                                ],
                                "description": "代理配置。未分配代理时为 `null`",
                                "properties": {
                                  "id": {
                                    "type": "string",
                                    "description": "代理 ID"
                                  },
                                  "proxyName": {
                                    "type": "string",
                                    "description": "代理名称"
                                  },
                                  "proxyType": {
                                    "type": "integer",
                                    "description": "代理类型"
                                  },
                                  "proxyProvider": {
                                    "type": "integer",
                                    "description": "代理提供商"
                                  },
                                  "proxyCategoryType": {
                                    "type": "integer",
                                    "description": "代理分类类型"
                                  },
                                  "proxyCheckStatus": {
                                    "type": "integer",
                                    "description": "代理检测状态"
                                  },
                                  "proxyStatus": {
                                    "type": "integer",
                                    "description": "代理状态"
                                  },
                                  "state": {
                                    "type": [
                                      "string",
                                      "null"
                                    ],
                                    "description": "代理所在州或省。优先返回出口 IP 探测地域，缺失时使用配置地域；可能为 null 或空字符串。",
                                    "example": "California"
                                  },
                                  "city": {
                                    "type": [
                                      "string",
                                      "null"
                                    ],
                                    "description": "代理所在城市。优先返回出口 IP 探测地域，缺失时使用配置地域；可能为 null 或空字符串。",
                                    "example": "Los Angeles"
                                  },
                                  "proxyPort": {
                                    "type": [
                                      "integer",
                                      "null"
                                    ],
                                    "format": "int32",
                                    "description": "代理连接端口，不从代理名称推断；不可用时可能为 null。",
                                    "example": 1080
                                  },
                                  "proxyIp": {
                                    "type": "string",
                                    "description": "代理 IP 地址"
                                  },
                                  "exportIp": {
                                    "type": "string",
                                    "description": "出口 IP 地址"
                                  },
                                  "countryCode": {
                                    "type": "string",
                                    "description": "国家代码"
                                  },
                                  "expiryTime": {
                                    "type": [
                                      "string",
                                      "null"
                                    ],
                                    "description": "过期时间戳"
                                  },
                                  "username": {
                                    "type": "string",
                                    "description": "代理用户名"
                                  },
                                  "password": {
                                    "type": [
                                      "string",
                                      "null"
                                    ],
                                    "description": "代理密码"
                                  },
                                  "refreshUrl": {
                                    "type": [
                                      "string",
                                      "null"
                                    ],
                                    "description": "代理刷新 URL"
                                  }
                                }
                              }
                            }
                          }
                        }
                      },
                      "required": [
                        "total",
                        "current",
                        "pages",
                        "dataList"
                      ]
                    },
                    "requestId": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "code",
                    "msg",
                    "data",
                    "requestId"
                  ]
                },
                "example": {
                  "code": 0,
                  "msg": null,
                  "data": {
                    "total": "1",
                    "current": "1",
                    "pages": "1",
                    "dataList": [
                      {
                        "id": "1673823102599682",
                        "envName": "example-name",
                        "groupId": "1673823102599682",
                        "groupName": "example-name",
                        "tagInfos": [
                          {
                            "id": "1673823102599682",
                            "tagName": "example-name"
                          }
                        ],
                        "envRemark": "example remark",
                        "proxyId": "1673823102599682",
                        "proxy": {
                          "id": "1673823102599682",
                          "proxyName": "example-name",
                          "proxyType": 1,
                          "proxyProvider": 1,
                          "proxyCategoryType": 1,
                          "proxyCheckStatus": 1,
                          "proxyStatus": 1,
                          "state": "California",
                          "city": "Los Angeles",
                          "proxyPort": 1080,
                          "proxyIp": "string",
                          "exportIp": "9222",
                          "countryCode": "string",
                          "expiryTime": "2026-09-01 12:00:00",
                          "username": "example-name",
                          "password": "string",
                          "refreshUrl": "https://example.com/resource"
                        }
                      }
                    ]
                  },
                  "requestId": "0d8b6f1c-9f4e-4d02-9d1a-7c3f5a1b2c3d"
                }
              }
            },
            "headers": {}
          }
        },
        "security": []
      }
    },
    "/api/env/detail": {
      "post": {
        "summary": "获取浏览器详情",
        "operationId": "getBrowserProfileDetailsUsingPOST",
        "deprecated": false,
        "description": "返回单个浏览器的完整配置，含高级指纹设置与 Cookie。\n\n- **前置条件**：浏览器必须存在于团队中，且调用者对它有权限。\n- **副作用**：无。只读。可带退避安全重试。\n- **说明**：账号密码与两步验证密钥只对团队所有者返回，或在该浏览器未配置为隐藏它们时返回。",
        "tags": [
          "Profiles"
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "envId"
                ],
                "properties": {
                  "envId": {
                    "type": "string",
                    "description": "目标环境（浏览器）ID",
                    "example": "1869988538611834880"
                  }
                }
              },
              "example": {
                "envId": "1869988538611834880"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "成功。`data` 是对象，包含字段 `id`、`envName`、`browserTypeId`、`operatorSystemId`、`groupId`、`groupName`、…。",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer"
                    },
                    "msg": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "envName": {
                          "type": "string"
                        },
                        "browserTypeId": {
                          "type": "integer"
                        },
                        "operatorSystemId": {
                          "type": "integer"
                        },
                        "groupId": {
                          "type": "string"
                        },
                        "groupName": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "分组名称；未分组时为 `null`"
                        },
                        "tagInfos": {
                          "type": "array",
                          "description": "标签信息；无标签时返回空数组",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string",
                                "description": "标签 ID"
                              },
                              "tagName": {
                                "type": "string",
                                "description": "标签名称"
                              }
                            },
                            "required": [
                              "id",
                              "tagName"
                            ]
                          }
                        },
                        "proxyId": {
                          "type": "string"
                        },
                        "isEncrypt": {
                          "type": "integer"
                        },
                        "envRemark": {
                          "type": "string"
                        },
                        "uaVersion": {
                          "type": "integer"
                        },
                        "browserCore": {
                          "type": "integer"
                        },
                        "accountInfo": {
                          "type": "object",
                          "properties": {
                            "username": {
                              "type": "string"
                            },
                            "password": {
                              "type": "string"
                            },
                            "siteId": {
                              "type": "string"
                            },
                            "platformId": {
                              "type": "string"
                            },
                            "customerUrl": {
                              "type": "string"
                            },
                            "otpSecret": {
                              "type": "null"
                            }
                          },
                          "required": [
                            "username",
                            "password",
                            "siteId",
                            "platformId",
                            "customerUrl",
                            "otpSecret"
                          ]
                        },
                        "isShowAccount": {
                          "type": "integer"
                        },
                        "afterStartupConfig": {
                          "type": "object",
                          "properties": {
                            "afterStartup": {
                              "type": "integer"
                            },
                            "autoOpenUrls": {
                              "type": "array",
                              "items": {}
                            },
                            "platformUrl": {
                              "type": "null"
                            }
                          },
                          "required": [
                            "afterStartup",
                            "autoOpenUrls",
                            "platformUrl"
                          ]
                        },
                        "startupParams": {
                          "type": "null"
                        },
                        "cookies": {
                          "type": "null"
                        },
                        "advancedSetting": {
                          "type": "object",
                          "properties": {}
                        }
                      }
                    },
                    "requestId": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "code": 0,
                  "msg": null,
                  "data": {
                    "id": "1673823102599682",
                    "envName": "example-name",
                    "browserTypeId": 1,
                    "operatorSystemId": 1,
                    "groupId": "1673823102599682",
                    "groupName": "example-name",
                    "tagInfos": [
                      {
                        "id": "1673823102599682",
                        "tagName": "example-name"
                      }
                    ],
                    "proxyId": "1673823102599682",
                    "isEncrypt": 1,
                    "envRemark": "example remark",
                    "uaVersion": 1,
                    "browserCore": 1,
                    "accountInfo": {
                      "username": "example-name",
                      "password": "string",
                      "siteId": "1673823102599682",
                      "platformId": "1673823102599682",
                      "customerUrl": "https://example.com/resource",
                      "otpSecret": null
                    },
                    "isShowAccount": 1,
                    "afterStartupConfig": {
                      "afterStartup": 1,
                      "autoOpenUrls": [],
                      "platformUrl": null
                    },
                    "startupParams": null,
                    "cookies": null,
                    "advancedSetting": {}
                  },
                  "requestId": "0d8b6f1c-9f4e-4d02-9d1a-7c3f5a1b2c3d"
                }
              }
            },
            "headers": {}
          }
        },
        "security": []
      }
    },
    "/api/env/advanced/ua/versions": {
      "get": {
        "operationId": "listAdvancedUaVersionsLocal",
        "summary": "获取浏览器内核版本列表",
        "deprecated": false,
        "description": "返回已发布的浏览器内核与 User-Agent 主版本号。\n\n- **副作用**：无。只读。可带退避安全重试。\n- **返回内容**：Open API 面只返回已发布的内核，而 Local API 面会按运行中的客户端版本过滤，因此两个面返回的集合可能不同。该列表会随新内核发布而变化。\n- **说明**：上游失败时返回空列表而不是报错，所以空结果应视为不确定，而非「没有内核」。\n- **Local API**：该列表会按运行中的桌面客户端版本过滤。",
        "tags": [
          "Fingerprint & Device Config"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "成功。`data` 是对象数组，元素包含字段 `browserType`、`versions`；无数据时返回空数组。",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer"
                    },
                    "msg": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "browserType": {
                            "type": "integer"
                          },
                          "versions": {
                            "type": "array",
                            "items": {
                              "type": "integer"
                            }
                          }
                        }
                      }
                    },
                    "requestId": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "code": 0,
                  "msg": null,
                  "data": [
                    {
                      "browserType": 1,
                      "versions": [
                        1
                      ]
                    }
                  ],
                  "requestId": "0d8b6f1c-9f4e-4d02-9d1a-7c3f5a1b2c3d"
                }
              }
            },
            "headers": {}
          }
        },
        "security": []
      }
    },
    "/api/env/advanced/ua/get": {
      "post": {
        "summary": "获取浏览器 UA",
        "operationId": "getBrowserProfileUAUsingPOST",
        "deprecated": false,
        "description": "生成与请求的操作系统和浏览器类型匹配的 User-Agent。\n\n- **前置条件**：Firefox 只能配 Windows 或 macOS，且 `osVersion` 必须是受支持的版本之一。\n- **副作用**：无，但**结果不是确定性的**——同样的请求每次返回不同的 User-Agent。不要把它当缓存键。\n- **完成信号**：同步。可安全重试。",
        "tags": [
          "Fingerprint & Device Config"
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "os"
                ],
                "properties": {
                  "os": {
                    "type": "integer",
                    "description": "操作系统类型：\n\n1 = Windows，2 = macOS，3 = Android，4 = iOS\n\n",
                    "enum": [
                      1,
                      2,
                      3,
                      4
                    ],
                    "example": 1
                  },
                  "osVersion": {
                    "type": "string",
                    "description": "操作系统版本（例如，“Windows 11”、“macOS 14”）。\n\n",
                    "example": "Windows 11"
                  },
                  "vendor": {
                    "type": "integer",
                    "description": "浏览器类型：\n\n1 = Chrome，2 = Firefox\n\n",
                    "enum": [
                      1,
                      2
                    ],
                    "example": 1
                  }
                }
              },
              "example": {
                "os": 1,
                "osVersion": "Windows 11",
                "vendor": 1
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "成功。该接口的 `data` 恒为 null，结果由 `code` 表达。",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer"
                    },
                    "msg": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "data": {
                      "type": "null"
                    },
                    "resolution": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "value": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "value"
                      ]
                    },
                    "ua": {
                      "type": "string"
                    },
                    "requestId": {
                      "type": "string"
                    },
                    "error": {
                      "type": "object",
                      "properties": {}
                    }
                  },
                  "required": [
                    "resolution",
                    "ua"
                  ]
                },
                "example": {
                  "code": 0,
                  "msg": null,
                  "data": null,
                  "resolution": {
                    "id": "1673823102599682",
                    "value": "string"
                  },
                  "ua": "string",
                  "requestId": "0d8b6f1c-9f4e-4d02-9d1a-7c3f5a1b2c3d",
                  "error": {}
                }
              }
            },
            "headers": {}
          }
        },
        "security": []
      }
    },
    "/api/env/base/resolution/list": {
      "post": {
        "summary": "获取分辨率",
        "operationId": "listResolutionsUsingPOST",
        "deprecated": false,
        "description": "返回某个 User-Agent 或操作系统下可用的屏幕分辨率。\n\n- **副作用**：无。只读。可带退避安全重试。\n- **返回内容**：由指纹基础数据服务提供，因此该列表会随那份数据的更新而变化。",
        "tags": [
          "Fingerprint & Device Config"
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "os": {
                    "type": "integer",
                    "description": "操作系统类型（1=Windows，2=macOS，3=Android，4=iOS）",
                    "example": 1
                  },
                  "ua": {
                    "type": "string",
                    "description": "用户代理字符串（可选）",
                    "example": ""
                  }
                },
                "required": [
                  "os"
                ]
              },
              "example": {
                "os": 1,
                "ua": ""
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "成功。`data` 是对象数组，元素包含字段 `id`、`value`；无数据时返回空数组。",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer"
                    },
                    "msg": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "value": {
                            "type": "string"
                          }
                        }
                      }
                    },
                    "requestId": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "code": 0,
                  "msg": null,
                  "data": [
                    {
                      "id": "1673823102599682",
                      "value": "string"
                    }
                  ],
                  "requestId": "0d8b6f1c-9f4e-4d02-9d1a-7c3f5a1b2c3d"
                }
              }
            },
            "headers": {}
          }
        },
        "security": []
      }
    },
    "/api/system/platform/list": {
      "get": {
        "operationId": "listSystemPlatformsLocal",
        "summary": "获取可配置平台",
        "deprecated": false,
        "description": "返回可绑定到浏览器的平台与站点。\n\n- **副作用**：无。只读。可带退避安全重试。\n- **返回内容**：标记为展示的系统平台与站点，加上调用方团队自己的自定义站点 URL。因此它既会随 MoreLogin 发布新平台而变化，也会随你团队通过高级创建新增自定义 URL 而变化。",
        "tags": [
          "Fingerprint & Device Config"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "成功。`data` 是对象数组，元素包含字段 `id`、`categoryId`、`groupName`、`groups`、`isCustomer`、`logo`、…；无数据时返回空数组。",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer"
                    },
                    "msg": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "平台 ID"
                          },
                          "categoryId": {
                            "type": "string",
                            "description": "类别 ID"
                          },
                          "groupName": {
                            "type": "string",
                            "description": "分组名称"
                          },
                          "groups": {
                            "type": "string",
                            "description": "分组，0：亚马逊"
                          },
                          "isCustomer": {
                            "type": "boolean",
                            "description": "是否需要定制平台"
                          },
                          "logo": {
                            "type": "string",
                            "description": "平台标志"
                          },
                          "name": {
                            "type": "string",
                            "description": "平台名称"
                          },
                          "orderNo": {
                            "type": "string",
                            "description": "排序数字"
                          },
                          "sites": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string",
                                  "description": "站点 ID"
                                },
                                "host": {
                                  "type": "string",
                                  "description": "网站域名"
                                },
                                "name": {
                                  "type": "string",
                                  "description": "尺寸名称"
                                },
                                "nameBak": {
                                  "type": "string",
                                  "description": "大小名称备份"
                                },
                                "logo": {
                                  "type": "string",
                                  "description": "标识"
                                },
                                "url": {
                                  "type": "string",
                                  "description": "尺寸 URL"
                                },
                                "isDefault": {
                                  "type": "boolean"
                                },
                                "country": {
                                  "type": "string",
                                  "description": "国家"
                                }
                              },
                              "required": [
                                "id",
                                "host",
                                "name",
                                "logo",
                                "nameBak",
                                "url",
                                "isDefault",
                                "country"
                              ]
                            },
                            "description": "网站信息"
                          }
                        },
                        "required": [
                          "id",
                          "categoryId",
                          "groupName",
                          "groups",
                          "isCustomer",
                          "logo",
                          "name",
                          "orderNo",
                          "sites"
                        ]
                      }
                    },
                    "requestId": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "code": 0,
                  "msg": null,
                  "data": [
                    {
                      "id": "1673823102599682",
                      "categoryId": "1673823102599682",
                      "groupName": "example-name",
                      "groups": "string",
                      "isCustomer": true,
                      "logo": "string",
                      "name": "example-name",
                      "orderNo": "string",
                      "sites": [
                        {
                          "id": "1673823102599682",
                          "host": "string",
                          "name": "example-name",
                          "nameBak": "example-name",
                          "logo": "string",
                          "url": "https://example.com/resource",
                          "isDefault": true,
                          "country": "string"
                        }
                      ]
                    }
                  ],
                  "requestId": "0d8b6f1c-9f4e-4d02-9d1a-7c3f5a1b2c3d"
                }
              }
            },
            "headers": {}
          }
        },
        "security": []
      }
    },
    "/api/env/lock/query": {
      "post": {
        "summary": "获取浏览器安全锁定状态",
        "operationId": "queryBrowserLockStatusUsingPOST",
        "deprecated": false,
        "description": "查询浏览器当前是否被其他团队成员占用。\n\n- **副作用**：无。只读。可带退避安全重试。\n- **语义**：返回 `true` 需同时满足——团队启用了安全锁功能、锁存在、且持有者不是调用者本人。锁按成员持有并带过期时间，因此它可能自行失效。",
        "tags": [
          "Profiles"
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "envId"
                ],
                "properties": {
                  "envId": {
                    "type": "string",
                    "description": "唯一环境（浏览器）ID",
                    "example": "1869988538611834880"
                  }
                }
              },
              "example": {
                "envId": "1869988538611834880"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "成功。`data` 是对象，包含字段 `envId`、`locked`。",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer"
                    },
                    "msg": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "data": {
                      "type": "object",
                      "properties": {
                        "envId": {
                          "type": "string"
                        },
                        "locked": {
                          "type": "boolean"
                        }
                      }
                    },
                    "requestId": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "code": 0,
                  "msg": null,
                  "data": {
                    "envId": "1673823102599682",
                    "locked": true
                  },
                  "requestId": "0d8b6f1c-9f4e-4d02-9d1a-7c3f5a1b2c3d"
                }
              }
            },
            "headers": {}
          }
        },
        "security": []
      }
    },
    "/api/env/base/list": {
      "post": {
        "summary": "获取时区和语言列表",
        "operationId": "listTimezoneAndLanguageUsingPOST",
        "deprecated": false,
        "description": "返回浏览器可用的时区与语言。\n\n- **副作用**：无。只读。可带退避安全重试。\n- **说明**：当前响应与请求体无关——服务并未把请求中的操作系统或语言透传给下游，因此无论传什么参数，返回的都是同一份列表。",
        "tags": [
          "Fingerprint & Device Config"
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "os"
                ],
                "properties": {
                  "os": {
                    "type": "integer",
                    "description": "操作系统类型：\n\n1 = Windows，2 = macOS，3 = Android，4 = iOS\n\n",
                    "enum": [
                      1,
                      2,
                      3,
                      4
                    ],
                    "example": 1
                  }
                }
              },
              "example": {
                "os": 1
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "成功。`data` 是对象，包含字段 `time_zone_list`、`language_list`。",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer"
                    },
                    "msg": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "data": {
                      "type": "object",
                      "properties": {
                        "time_zone_list": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "value": {
                                "type": "string"
                              }
                            }
                          }
                        },
                        "language_list": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "value": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    },
                    "requestId": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "code": 0,
                  "msg": null,
                  "data": {
                    "time_zone_list": [
                      {
                        "id": "1673823102599682",
                        "value": "string"
                      }
                    ],
                    "language_list": [
                      {
                        "id": "1673823102599682",
                        "value": "string"
                      }
                    ]
                  },
                  "requestId": "0d8b6f1c-9f4e-4d02-9d1a-7c3f5a1b2c3d"
                }
              }
            },
            "headers": {}
          }
        },
        "security": []
      }
    },
    "/api/env/removeLocalCache": {
      "post": {
        "summary": "清除本地浏览器缓存",
        "operationId": "clearLocalProfileCacheUsingPOST",
        "deprecated": false,
        "description": "请求本地 MoreLogin 客户端清除浏览器的缓存数据。\n\n- **前置条件**：用 `envId` 或 `uniqueId` 指定浏览器，并至少选择一种缓存类型。Firefox 浏览器必须一次性全选。\n- **副作用**：服务只做校验并记录该请求；**真正的删除由桌面客户端在本地磁盘上执行**。云端缓存不受影响——那需要用云端缓存接口。\n- **完成信号**：响应表示服务已受理请求，不代表本地文件已被删除。没有接口能报告本地磁盘状态。",
        "tags": [
          "Cache & Window"
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "envId"
                ],
                "properties": {
                  "envId": {
                    "type": "string",
                    "description": "环境 ID。必须提供 `envId` 或 `uniqueId` 中的一个。\n\n"
                  },
                  "localStorage": {
                    "type": "boolean",
                    "description": "清除本地存储 默认值：false",
                    "default": false
                  },
                  "indexedDB": {
                    "type": "boolean",
                    "description": "清除 IndexedDB 默认值：false",
                    "default": false
                  },
                  "cookie": {
                    "type": "boolean",
                    "description": "清除 Cookie（默认值：false）",
                    "default": false
                  },
                  "extension": {
                    "type": "boolean",
                    "description": "清除扩展数据。如果未提供 `extensionFile`，\n\n则同时清除扩展名和数据。默认值：false\n\n",
                    "default": false
                  },
                  "extensionFile": {
                    "type": "boolean",
                    "description": "清除扩展文件（自 v3.36 版本起生效）。\n\n",
                    "default": false
                  }
                }
              },
              "example": {
                "envId": "1924340272932134912",
                "localStorage": false,
                "indexedDB": false,
                "cookie": false,
                "extension": false,
                "extensionFile": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "成功。`data` 是对象，包含字段 `envId`。",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer"
                    },
                    "msg": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "data": {
                      "type": "object",
                      "properties": {
                        "envId": {
                          "type": "string"
                        }
                      }
                    },
                    "requestId": {
                      "type": "string",
                      "description": "请求唯一标识；联系支持时请提供"
                    }
                  }
                },
                "example": {
                  "code": 0,
                  "msg": null,
                  "data": {
                    "envId": "1673823102599682"
                  },
                  "requestId": "0d8b6f1c-9f4e-4d02-9d1a-7c3f5a1b2c3d"
                }
              }
            }
          }
        },
        "security": []
      }
    },
    "/api/env/cache/cleanCloud": {
      "post": {
        "operationId": "cleanCloudCacheLocal",
        "summary": "清理浏览器缓存",
        "deprecated": false,
        "description": "清除浏览器的云端缓存。\n\n- **前置条件**：用 `envId` 或 `uniqueId` 指定浏览器，至少选择一类缓存，且该浏览器不能处于转移中。本地客户端缓存不受影响。\n- **副作用**：清除常规类会移除云端 LocalStorage、IndexedDB 和扩展数据，解除该浏览器的扩展绑定，并**重置 profile 加密类型**；清除 Cookie 会重置 Cookie 加密类型。两项变更都会持久化，因此加密浏览器在被清除的那一类上会变成未加密。\n- **完成信号**：同步——云存储服务已受理并返回后才响应。没有任务 ID 可轮询。\n\n已记录的业务错误码：`19039`, `19149`。 各错误码的含义见 [Error Codes](../Getting%20Started/error-codes.md)。任何接口还可能返回通用错误码。",
        "tags": [
          "Cache & Window"
        ],
        "parameters": [
          {
            "name": "Accept-Language",
            "in": "header",
            "description": "默认请求语言",
            "required": false,
            "example": "zh-CN",
            "schema": {
              "type": "string",
              "default": "zh-CN"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "cookie": {
                    "description": "是否清除 cookie",
                    "type": "boolean"
                  },
                  "envId": {
                    "description": "环境 ID，必须填写一个序列号",
                    "type": "string"
                  },
                  "others": {
                    "description": "是否清除其他缓存",
                    "type": "boolean"
                  },
                  "uniqueId": {
                    "description": "序列号 ID，必须填写一个环境 ID",
                    "type": "integer"
                  }
                }
              },
              "example": {
                "cookie": true,
                "envId": "1661515884160372",
                "others": true
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "成功。该接口的 `data` 恒为 null，结果由 `code` 表达。",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer"
                    },
                    "msg": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "data": {
                      "type": "null"
                    },
                    "requestId": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "code": 0,
                  "msg": null,
                  "data": null,
                  "requestId": "ca3b32431c264b6c94187fde14d23229"
                }
              }
            },
            "headers": {}
          }
        },
        "security": []
      }
    },
    "/api/env/fingerprint/refresh": {
      "post": {
        "summary": "刷新指纹",
        "operationId": "refreshFingerprintUsingPOST",
        "deprecated": false,
        "description": "重新生成浏览器的指纹。\n\n- **前置条件**：用 `envId` 或 `uniqueId` 指定浏览器。加密浏览器会被拒绝。运行中的浏览器不会被阻止，但新指纹从下次启动才开始生效。\n- **副作用**：生成一套新指纹，随机化主机名与 MAC 地址，并重新匹配浏览器内核。请求中显式给出的值优先于生成值。\n- **完成信号**：同步。\n- **重试**：**绝对不要自动重试。** 每次调用都会产生一套不同的随机指纹，因此超时后盲目重试会把配置改第二次。请先用 `/env/detail` 比对。\n\n已记录的业务错误码：`19039`, `19104`, `19105`, `19106`, `19107`, `19108`, `19111`, `19142`, `19193`。 各错误码的含义见 [Error Codes](../Getting%20Started/error-codes.md)。任何接口还可能返回通用错误码。",
        "tags": [
          "Fingerprint & Device Config"
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "envId"
                ],
                "properties": {
                  "envId": {
                    "type": "string",
                    "description": "环境 ID（配置文件 ID）。必须提供 `envId` 或 `uniqueId` 中的一个。\n\n"
                  },
                  "uniqueId": {
                    "type": "string",
                    "description": "浏览器环境唯一标识符（唯一标识符）。必须提供 `envId` 或 `uniqueId` 中的一个。\n\n"
                  },
                  "uaVersion": {
                    "type": "integer",
                    "description": "目标用户代理版本（例如，Chrome 129）。\n\n如果省略，则使用浏览器中的当前用户代理版本。\n\n",
                    "example": 129
                  },
                  "browserTypeId": {
                    "type": "integer",
                    "description": "浏览器类型。1 = Chrome，2 = Firefox。\n\n",
                    "enum": [
                      1,
                      2
                    ]
                  },
                  "operatorSystemId": {
                    "type": "integer",
                    "description": "操作系统类型：1 = Windows，2 = macOS，3 = Android，4 = iOS。\n\n",
                    "enum": [
                      1,
                      2,
                      3,
                      4
                    ]
                  },
                  "advancedSetting": {
                    "$ref": "#/components/schemas/AdvancedSetting"
                  }
                }
              },
              "example": {
                "envId": "1869988538611834880",
                "uniqueId": "",
                "uaVersion": 129,
                "browserTypeId": 1,
                "operatorSystemId": 2,
                "advancedSetting": {}
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "成功。该接口的 `data` 恒为 null，结果由 `code` 表达。",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer"
                    },
                    "msg": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "data": {
                      "type": "null"
                    },
                    "requestId": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "code": 0,
                  "msg": null,
                  "data": null,
                  "requestId": "0d8b6f1c-9f4e-4d02-9d1a-7c3f5a1b2c3d"
                }
              }
            },
            "headers": {}
          }
        },
        "security": []
      }
    },
    "/api/env/status": {
      "post": {
        "operationId": "getBrowserProfileStatusLocal",
        "summary": "获取浏览器运行状态",
        "deprecated": false,
        "description": "返回一个或多个浏览器的实时运行状态。\n\n- **副作用**：无。只读。可带退避安全重试。\n- **取值**：每个浏览器只报 `running` 或 `stopped`。这是启动与关闭操作的完成信号。\n- **说明**：解析不到的 ID 会被静默丢弃；只有全部都解析不到时调用才失败。",
        "tags": [
          "Runtime"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "envId": {
                    "description": "浏览器环境 ID",
                    "type": "string"
                  }
                },
                "required": [
                  "envId"
                ]
              },
              "example": {
                "envId": "1957985601221750784"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "成功。`data` 是对象，包含字段 `envId`、`debugPort`、`status`、`localStatus`、`webdriver`。",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer"
                    },
                    "msg": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "data": {
                      "type": "object",
                      "properties": {
                        "envId": {
                          "type": "string",
                          "description": "环境 ID"
                        },
                        "status": {
                          "type": "string"
                        },
                        "localStatus": {
                          "type": "string"
                        },
                        "debugPort": {
                          "type": "string"
                        },
                        "webdriver": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "envId",
                        "debugPort",
                        "status",
                        "localStatus",
                        "webdriver"
                      ]
                    },
                    "requestId": {
                      "type": "string",
                      "description": "请求唯一标识；联系支持时请提供"
                    }
                  },
                  "required": [
                    "code",
                    "msg",
                    "data"
                  ]
                },
                "example": {
                  "code": 0,
                  "msg": null,
                  "data": {
                    "envId": "1673823102599682",
                    "status": "0",
                    "localStatus": "0",
                    "debugPort": "9222",
                    "webdriver": "string"
                  },
                  "requestId": "0d8b6f1c-9f4e-4d02-9d1a-7c3f5a1b2c3d"
                }
              }
            },
            "headers": {}
          }
        },
        "security": []
      }
    },
    "/api/env/getAllScreen": {
      "post": {
        "operationId": "getAllBrowserScreensLocal",
        "summary": "获取屏幕列表",
        "deprecated": false,
        "description": "列出客户端可用于排列窗口的显示器。\n\n- **执行位置**：完全由 MoreLogin 桌面客户端在你本机处理。**服务端没有对应实现**，因此除了客户端已打开该环境外没有任何账号、团队或状态前置条件，云端也不会留下记录。\n- **副作用**：仅限本地浏览器进程与窗口。环境数据、指纹与云端缓存都不受影响。\n- **完成信号**：同步——客户端执行完毕即返回。\n- **可用面**：仅 Local API。Open API 没有对应接口，因为它没有可操作的本地浏览器；请改用云运行时相关接口。\n- **说明**：由于该能力归客户端所有，响应结构取决于已安装的客户端版本，而非服务端契约。",
        "tags": [
          "Cache & Window"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {}
              },
              "example": {}
            }
          }
        },
        "responses": {
          "200": {
            "description": "成功。`data` 是对象数组，元素包含字段 `id`、`scaleFactor`、`width`、`height`、`internal`、`x`、…；无数据时返回空数组。",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer"
                    },
                    "msg": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "屏幕的唯一标识符"
                          },
                          "scaleFactor": {
                            "type": "integer",
                            "description": "屏幕缩放因子"
                          },
                          "width": {
                            "type": "integer",
                            "description": "屏幕像素宽度"
                          },
                          "height": {
                            "type": "integer",
                            "description": "屏幕像素高度"
                          },
                          "internal": {
                            "type": "boolean",
                            "description": "指示屏幕是否为内置式"
                          },
                          "x": {
                            "type": "integer",
                            "description": "屏幕在虚拟坐标系中 X 轴上的位置"
                          },
                          "y": {
                            "type": "integer",
                            "description": "屏幕在虚拟坐标系中 Y 轴上的位置"
                          },
                          "current": {
                            "type": "boolean",
                            "description": "当前活动屏幕的标识符"
                          },
                          "realWidth": {
                            "type": "integer",
                            "description": "屏幕的实际物理宽度"
                          },
                          "realHeight": {
                            "type": "integer",
                            "description": "屏幕的实际物理高度"
                          },
                          "workAreaWidth": {
                            "type": "integer",
                            "description": "屏幕工作区的像素宽度"
                          },
                          "workAreaHeight": {
                            "type": "integer",
                            "description": "屏幕工作区的像素高度"
                          },
                          "workAreaRealWidth": {
                            "type": "integer",
                            "description": "工作区域的实际物理宽度"
                          },
                          "workAreaRealHeight": {
                            "type": "integer",
                            "description": "工作区域的实际物理高度"
                          },
                          "rectWorkAreaWidth": {
                            "type": "integer",
                            "description": "工作区域宽度已修正"
                          },
                          "rectWorkAreaHeight": {
                            "type": "integer",
                            "description": "工作区域高度已修正"
                          },
                          "rectWorkAreaRealWidth": {
                            "type": "integer",
                            "description": "修正后工作区域的实际物理宽度"
                          },
                          "rectWorkAreaRealHeight": {
                            "type": "integer",
                            "description": "修正后工作区域的实际物理高度"
                          },
                          "rectWorkAreaX": {
                            "type": "integer",
                            "description": "修正后工作区域的 X 轴位置"
                          },
                          "rectWorkAreaY": {
                            "type": "integer",
                            "description": "修正后工作区域的Y轴位置"
                          },
                          "depthPerComponent": {
                            "type": "integer",
                            "description": "屏幕上每个像素的颜色精度"
                          },
                          "isPrimaryScreen": {
                            "type": "boolean",
                            "description": "屏幕是否为主显示器"
                          }
                        }
                      }
                    },
                    "requestId": {
                      "type": "string",
                      "description": "请求唯一标识；联系支持时请提供"
                    }
                  }
                },
                "example": {
                  "code": 0,
                  "msg": null,
                  "data": [
                    {
                      "width": 1920,
                      "height": 1080,
                      "internal": false,
                      "x": 0,
                      "y": 0,
                      "current": true,
                      "scaleFactor": 1,
                      "id": "2528732444",
                      "realWidth": 1920,
                      "realHeight": 1080,
                      "workAreaWidth": 1920,
                      "workAreaHeight": 1032,
                      "rectWorkAreaWidth": 1920,
                      "rectWorkAreaHeight": 1032,
                      "rectWorkAreaRealWidth": 1920,
                      "rectWorkAreaRealHeight": 1032,
                      "rectWorkAreaX": 0,
                      "rectWorkAreaY": 0,
                      "depthPerComponent": 8,
                      "workAreaRealWidth": 1920,
                      "workAreaRealHeight": 1032,
                      "isPrimaryScreen": true
                    }
                  ]
                }
              }
            },
            "headers": {}
          }
        },
        "security": []
      }
    },
    "/api/env/arrangeWindows": {
      "post": {
        "operationId": "arrangeBrowserWindowsLocal",
        "summary": "一键自适应窗口排列",
        "deprecated": false,
        "description": "在屏幕上排列正在运行的浏览器环境窗口。\n\n- **执行位置**：完全由 MoreLogin 桌面客户端在你本机处理。**服务端没有对应实现**，因此除了客户端已打开该环境外没有任何账号、团队或状态前置条件，云端也不会留下记录。\n- **副作用**：仅限本地浏览器进程与窗口。环境数据、指纹与云端缓存都不受影响。\n- **完成信号**：同步——客户端执行完毕即返回。\n- **可用面**：仅 Local API。Open API 没有对应接口，因为它没有可操作的本地浏览器；请改用云运行时相关接口。\n- **说明**：由于该能力归客户端所有，响应结构取决于已安装的客户端版本，而非服务端契约。",
        "tags": [
          "Cache & Window"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arrangeType": {
                    "description": "排列类型：1 表示平铺，2 表示堆叠，如果未指定则默认为平铺。",
                    "type": "integer"
                  },
                  "envIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "如果未指定环境 ID，则默认选择所有环境窗口。"
                  },
                  "screenIds": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    },
                    "description": "屏幕 ID（数组类型），如果未指定，则排列在鼠标光标所在的屏幕上"
                  }
                }
              },
              "example": {
                "arrangeType": 1,
                "envIds": [
                  "string"
                ],
                "screenIds": [
                  1
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "标准响应信封。执行结果通过 `code` 表达；该接口未定义额外的响应载荷。",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer"
                    },
                    "msg": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "错误信息；成功时为 null"
                    },
                    "requestId": {
                      "type": "string",
                      "description": "请求唯一标识；联系支持时请提供"
                    }
                  },
                  "required": [
                    "code",
                    "msg",
                    "requestId"
                  ]
                },
                "example": {
                  "code": 0,
                  "msg": null,
                  "requestId": "0d8b6f1c-9f4e-4d02-9d1a-7c3f5a1b2c3d"
                }
              }
            },
            "headers": {}
          }
        },
        "security": []
      }
    },
    "/api/env/setGroup/batch": {
      "post": {
        "operationId": "setBrowserGroupsBatchLocal",
        "summary": "批量修改浏览器环境分组",
        "deprecated": false,
        "description": "按分组名称把浏览器移入分组。\n\n- **前置条件**：`envIds` 与 `uniqueIds` 至少提供一个；`groupName` 必填且不超过 50 字符。本接口无法清除浏览器的分组。\n- **副作用**：分组名不存在时会自动创建，这会**计入团队 1000 个分组的上限**，达到上限后调用失败。一个浏览器只属于一个分组，因此原分组会被替换。当团队按分组授权时，这里新建的分组也会授权给你。\n- **完成信号**：同步。分组创建按团队串行化，因此用同一个新名称的并发调用不会创建出重复分组。",
        "tags": [
          "Profiles"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "envIds": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "description": "环境 ID（数组类型），必须在此类型和序列 ID 之间二选一。"
                    }
                  },
                  "groupName": {
                    "description": "分组名称，字符串类型，必填",
                    "type": "string"
                  },
                  "uniqueIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "序列号 ID，数组类型，必须在此类型和环境 ID 之间二选一。"
                  }
                },
                "required": [
                  "groupName"
                ]
              },
              "example": {
                "groupName": "example-name"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "成功。`data` 是单个布尔值。",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer"
                    },
                    "msg": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "data": {
                      "type": "boolean"
                    },
                    "requestId": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "requestId"
                  ]
                },
                "example": {
                  "code": 0,
                  "msg": null,
                  "data": true,
                  "requestId": "a416bb98f6d240c3bb79e7b2cf6e7ad4"
                }
              }
            },
            "headers": {}
          }
        },
        "security": []
      }
    },
    "/api/env/setProxy/batch": {
      "post": {
        "operationId": "setBrowserProxiesBatchLocal",
        "summary": "批量修改浏览器环境代理",
        "deprecated": false,
        "description": "为多个浏览器绑定代理。\n\n- **前置条件**：`envIds` 与 `uniqueIds` 至少提供一个。传入的 `proxyId` 必须已存在于团队中，否则调用被拒绝而不是自动创建。\n- **副作用**：在每个浏览器上写入 `proxyId`。当 `proxyId` 省略或为 `0` 时，会复用连接信息完全相同的已有代理；**若没有匹配项，则在调用方团队中新建一条代理记录**。\n- **完成信号**：同步。运行中的浏览器仍使用启动时的代理。\n- **重试**：重新绑定同一个 `proxyId` 是幂等的；但如果请求里带的是原始连接信息，每次去重未命中都可能再新建一条代理记录。\n\n已记录的业务错误码：`19106`, `19193`, `14023`。 各错误码的含义见 [Error Codes](../Getting%20Started/error-codes.md)。任何接口还可能返回通用错误码。",
        "tags": [
          "Profiles"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "envIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "选择一个带有序列号的，必须填写一个。"
                  },
                  "proxy": {
                    "type": "object",
                    "properties": {
                      "city": {
                        "type": "string",
                        "description": "城市"
                      },
                      "state": {
                        "type": "string",
                        "description": "州/省"
                      },
                      "country": {
                        "type": "string",
                        "description": "国家/地区（具体国家/地区代码见附录）。当 proxyProvider 为 16/17/18 时为必填项。"
                      },
                      "encryptionType": {
                        "type": "integer",
                        "description": "加密方法。当 proxyProvider 为 11 时，此参数不能为空。1：aes-128-gcm，2：aes-192-gcm，3：aes-256-gcm，4：aes-128-cfb，5：aes-192-cfb，6：aes-256-cfb，7：aes-128-ctr，8：aes-192-ctr，9：aes-256-ctr，10：rc4-md5，11：chacha20-ietf，12：xchacha20，13：chacha20-ietf-poly1305，14：xchacha20-ietf-poly1305"
                      },
                      "proxyId": {
                        "type": "string",
                        "description": "代理 ID"
                      },
                      "proxyIp": {
                        "description": "代理 IP 地址。当 proxyProvider 为 16/17/18 时，此字段可以为空；其他情况下为必填项。",
                        "type": "string"
                      },
                      "proxyPort": {
                        "type": "integer",
                        "description": "代理端口（仅允许使用 1-65535 之间的数字）。当 proxyProvider 为 16/17/18 时，此参数可以为空；其他情况下为必填项。"
                      },
                      "proxyType": {
                        "type": "integer",
                        "description": "代理类型，0：http，1：https。当 proxyProvider 为 7/8 时，此值不能为空。"
                      },
                      "proxyProvider": {
                        "type": "string",
                        "description": "代理提供商：0：http，1：https，2：socks5，3：ssh，4：Oxylabs，5：Proxys.io，7：Luminati，8：Lumauto，9：Oxylabsauto，10：Trojan，11：Shadowsocks，13：ABCPROXY，14：LunaProxy，15：IPHTML，16：PiaProxy，17：922S5，18：360Proxy"
                      },
                      "proxyName": {
                        "type": "string",
                        "description": "代理名称（最多 600 个字符）"
                      },
                      "password": {
                        "type": "string",
                        "description": "密码（最多 100 个字符）"
                      },
                      "refreshUrl": {
                        "type": "string",
                        "description": "刷新网址"
                      },
                      "ipMonitor": {
                        "type": "boolean",
                        "description": "启用 IP 地址变更监控？true：开启，false：关闭"
                      },
                      "ipChangeAction": {
                        "type": "integer",
                        "description": "IP地址变更监控：0：阻止访问，1：警告"
                      },
                      "username": {
                        "type": "string",
                        "description": "用户名（最多 200 个字符）"
                      }
                    },
                    "required": [
                      "city",
                      "country",
                      "encryptionType",
                      "ipChangeAction",
                      "ipMonitor",
                      "password",
                      "proxyId",
                      "proxyIp",
                      "proxyName",
                      "proxyPort",
                      "proxyProvider",
                      "proxyType",
                      "refreshUrl",
                      "state",
                      "username"
                    ],
                    "description": "用于更改环境绑定的代理。如果提供了 proxyId，则绑定到该 ID 所代表的代理；否则，绑定到新添加的代理。如果代理信息保持不变，则不会重新绑定（proxyIp、proxyPort、proxyType 或 proxyProvider 的任何更改都被视为新的代理，并且重新绑定成功）。"
                  },
                  "uniqueIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "选择一个带有环境 ID 的环境，必须填写一个。"
                  }
                },
                "required": [
                  "proxy"
                ]
              },
              "example": {
                "proxy": {
                  "city": "string",
                  "country": "string",
                  "encryptionType": 1,
                  "ipChangeAction": 1,
                  "ipMonitor": true,
                  "password": "string",
                  "proxyId": "1661515884160372",
                  "proxyIp": "string",
                  "proxyName": "example-name",
                  "proxyPort": 1,
                  "proxyProvider": "string",
                  "proxyType": 1,
                  "refreshUrl": "https://example.com/resource",
                  "state": "string",
                  "username": "example-name"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "成功。`data` 是单个布尔值。",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer"
                    },
                    "msg": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "data": {
                      "type": "boolean"
                    },
                    "requestId": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "requestId"
                  ]
                },
                "example": {
                  "code": 0,
                  "msg": null,
                  "data": true,
                  "requestId": "d57cfecfc6904fcaa57da9f65b2a15fd"
                }
              }
            },
            "headers": {}
          }
        },
        "security": []
      }
    },
    "/api/env/setRemark/batch": {
      "post": {
        "operationId": "setBrowserRemarksBatchLocal",
        "summary": "批量修改浏览器环境备注",
        "deprecated": false,
        "description": "批量设置浏览器备注。传空字符串表示清除备注。\n\n- **前置条件**：`envIds` 与 `uniqueIds` 至少提供一个；调用者对每个浏览器都要有权限。\n- **副作用**：只写备注字段。\n- **完成信号**：同步，相同请求体完全幂等。",
        "tags": [
          "Profiles"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "envIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "环境 ID，必须在此 ID 和序列号 ID 之间选择一个。"
                  },
                  "envRemark": {
                    "description": "备注（必填）",
                    "type": "string"
                  },
                  "uniqueIds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "序列号，必须在此值和环境 ID 之间选择一个。"
                  }
                },
                "required": [
                  "envRemark"
                ]
              },
              "example": {
                "envRemark": "string"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "成功。`data` 是单个布尔值。",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer"
                    },
                    "msg": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "data": {
                      "type": "boolean"
                    },
                    "requestId": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "requestId"
                  ]
                },
                "example": {
                  "code": 0,
                  "msg": null,
                  "data": true,
                  "requestId": "8172c8ff6ae048a9bb2546760832a460"
                }
              }
            },
            "headers": {}
          }
        },
        "security": []
      }
    },
    "/api/env/closeAll": {
      "post": {
        "operationId": "closeAllBrowserProfilesLocal",
        "summary": "关闭所有已打开浏览器环境",
        "deprecated": false,
        "description": "关闭该客户端上所有正在运行的浏览器环境。\n\n- **执行位置**：完全由 MoreLogin 桌面客户端在你本机处理。**服务端没有对应实现**，因此除了客户端已打开该环境外没有任何账号、团队或状态前置条件，云端也不会留下记录。\n- **副作用**：仅限本地浏览器进程与窗口。环境数据、指纹与云端缓存都不受影响。\n- **完成信号**：同步——客户端执行完毕即返回。\n- **可用面**：仅 Local API。Open API 没有对应接口，因为它没有可操作的本地浏览器；请改用云运行时相关接口。\n- **说明**：由于该能力归客户端所有，响应结构取决于已安装的客户端版本，而非服务端契约。",
        "tags": [
          "Runtime"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {}
              },
              "example": {}
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "成功。该接口不返回响应载荷，结果由 `code` 表达。",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer"
                    },
                    "msg": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "requestId": {
                      "type": "string",
                      "description": "请求唯一标识；联系支持时请提供"
                    }
                  }
                },
                "example": {
                  "code": 0,
                  "msg": "Closed successfully"
                }
              }
            },
            "headers": {}
          }
        },
        "security": []
      }
    },
    "/api/env/getAllProcessIds": {
      "post": {
        "operationId": "getAllBrowserProcessIdsLocal",
        "summary": "获取所有已打开浏览器的进程 ID",
        "deprecated": false,
        "description": "列出正在运行的浏览器环境的进程 ID。\n\n- **执行位置**：完全由 MoreLogin 桌面客户端在你本机处理。**服务端没有对应实现**，因此除了客户端已打开该环境外没有任何账号、团队或状态前置条件，云端也不会留下记录。\n- **副作用**：仅限本地浏览器进程与窗口。环境数据、指纹与云端缓存都不受影响。\n- **完成信号**：同步——客户端执行完毕即返回。\n- **可用面**：仅 Local API。Open API 没有对应接口，因为它没有可操作的本地浏览器；请改用云运行时相关接口。\n- **说明**：由于该能力归客户端所有，响应结构取决于已安装的客户端版本，而非服务端契约。",
        "tags": [
          "Runtime"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {}
              },
              "example": {}
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "成功。`data` 是对象数组，元素包含字段 `envId`、`uniqueId`、`envName`、`pid`；无数据时返回空数组。",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer"
                    },
                    "msg": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "envId": {
                            "type": "string",
                            "description": "环境 ID"
                          },
                          "uniqueId": {
                            "type": "integer",
                            "description": "序列 ID"
                          },
                          "envName": {
                            "type": "string",
                            "description": "环境名称"
                          },
                          "pid": {
                            "type": "integer",
                            "description": "pid"
                          }
                        }
                      }
                    },
                    "requestId": {
                      "type": "string",
                      "description": "请求唯一标识；联系支持时请提供"
                    }
                  }
                },
                "example": {
                  "code": 0,
                  "msg": null,
                  "data": [
                    {
                      "envId": "2014664375044337664",
                      "uniqueId": 1788,
                      "envName": "P-1788",
                      "pid": 22460
                    }
                  ]
                }
              }
            },
            "headers": {}
          }
        },
        "security": []
      }
    },
    "/api/env/getAllDebugInfo": {
      "post": {
        "operationId": "getAllBrowserDebugInfoLocal",
        "summary": "获取所有已打开浏览器的远程调试信息",
        "deprecated": false,
        "description": "列出正在运行的浏览器环境的调试端点。\n\n- **执行位置**：完全由 MoreLogin 桌面客户端在你本机处理。**服务端没有对应实现**，因此除了客户端已打开该环境外没有任何账号、团队或状态前置条件，云端也不会留下记录。\n- **副作用**：仅限本地浏览器进程与窗口。环境数据、指纹与云端缓存都不受影响。\n- **完成信号**：同步——客户端执行完毕即返回。\n- **可用面**：仅 Local API。Open API 没有对应接口，因为它没有可操作的本地浏览器；请改用云运行时相关接口。\n- **说明**：由于该能力归客户端所有，响应结构取决于已安装的客户端版本，而非服务端契约。",
        "tags": [
          "Runtime"
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {}
              },
              "example": {}
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "成功。`data` 是对象数组，元素包含字段 `envId`、`uniqueId`、`envName`、`debugPort`、`webdriver`、`pid`；无数据时返回空数组。",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer"
                    },
                    "msg": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "envId": {
                            "type": "string",
                            "description": "环境 ID"
                          },
                          "uniqueId": {
                            "type": "integer",
                            "description": "序列 ID"
                          },
                          "envName": {
                            "type": "string",
                            "description": "环境名称"
                          },
                          "debugPort": {
                            "type": "string",
                            "description": "调试端口"
                          },
                          "webdriver": {
                            "type": "string",
                            "description": "webdriver"
                          },
                          "pid": {
                            "type": "integer",
                            "description": "pid"
                          }
                        }
                      }
                    },
                    "requestId": {
                      "type": "string",
                      "description": "请求唯一标识；联系支持时请提供"
                    }
                  }
                },
                "example": {
                  "code": 0,
                  "msg": null,
                  "data": [
                    {
                      "envId": "2014664375044337664",
                      "uniqueId": 1788,
                      "envName": "P-1788",
                      "debugPort": "63536",
                      "webdriver": "C:\\Users\\EDY\\AppData\\Roaming\\MoreLogin\\env-kit\\Core\\chrome_64_142.9\\webdriver.exe",
                      "pid": 22460
                    }
                  ]
                }
              }
            },
            "headers": {}
          }
        },
        "security": []
      }
    },
    "/api/env/base/mobile/devices": {
      "post": {
        "operationId": "listMobileDeviceModelsLocal",
        "summary": "获取手机型号列表",
        "deprecated": false,
        "description": "返回 Android 与 iOS 浏览器可用的移动设备机型。\n\n- **副作用**：无。只读。可带退避安全重试。\n- **返回内容**：MoreLogin 机型表与指纹基础数据服务的交集。只存在于其中一方的机型会被忽略，且返回的 `id` 属于指纹服务，不是机型表的主键。",
        "tags": [
          "Fingerprint & Device Config"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "成功。`data` 是对象数组，元素包含字段 `id`、`name`、`resolution`、`os`、`platform`；无数据时返回空数组。",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BrowserPhoneList"
                },
                "example": {
                  "code": 0,
                  "msg": null,
                  "data": [
                    {
                      "id": "1673823102599682",
                      "name": "example-name",
                      "resolution": "string",
                      "os": 1,
                      "platform": "string"
                    }
                  ],
                  "requestId": "0d8b6f1c-9f4e-4d02-9d1a-7c3f5a1b2c3d"
                }
              }
            },
            "headers": {}
          }
        },
        "security": []
      }
    },
    "/api/env/core/download": {
      "post": {
        "operationId": "downloadBrowserKernelsLocal",
        "summary": "下载浏览器内核",
        "deprecated": false,
        "description": "下载并安装浏览器内核。支持批量下载，每次请求最多 20 个内核。此操作的超时时间最长约 30 分钟，建议调用方超时设置大于 1805 秒。\n\n需要 MoreLogin 客户端版本 **2.61.1** 或更高。\n\n### 重复请求处理\n\n- 同一请求中出现多个相同浏览器类型和主版本的任务，只查询一次、只执行一次实际下载，但每个输入项都会返回结果。\n- 多个并发请求下载相同版本会加入正在进行的任务，不重复下载。\n- 如果已安装的完整版本与最新版本一致，状态返回 `already_installed`。\n- 如果已安装的是旧的小版本，将下载并更新到当前最新小版本。\n\n### 错误码参考\n\n| errorCode | 说明 |\n|---|---|\n| `INVALID_JSON` | JSON 格式错误 |\n| `INVALID_REQUEST` | 请求结构错误 |\n| `BATCH_LIMIT_EXCEEDED` | `Cores` 超过 20 条 |\n| `UNSUPPORTED_BROWSER_TYPE` | 不支持的浏览器类型 |\n| `INVALID_VERSION` | 版本格式错误 |\n| `METADATA_LOOKUP_FAILED` | 查询内核信息失败 |\n| `UNSUPPORTED_VERSION` | 内核版本不存在或当前平台不支持 |\n| `CLIENT_NOT_READY` | 客户端未准备完成 |\n| `SDK_NOT_READY` | SDK 未初始化 |\n| `INSUFFICIENT_DISK_SPACE` | 磁盘空间不足 |\n| `DOWNLOAD_FAILED` | 下载失败 |\n| `CHECKSUM_MISMATCH` | MD5 校验失败 |\n| `EXTRACTION_FAILED` | 解压或安装失败 |\n| `TIMEOUT` | 执行超时 |\n| `UNKNOWN` | 未知异常 |\n",
        "tags": [
          "Runtime"
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "Cores": {
                    "type": "array",
                    "description": "待下载的内核列表（1–20 项）",
                    "items": {
                      "type": "object",
                      "properties": {
                        "BrowserType": {
                          "type": "integer",
                          "description": "浏览器类型。`1`：Chrome，`2`：Firefox"
                        },
                        "Version": {
                          "type": "string",
                          "description": "内核主版本号，例如 `\"124\"`、`\"146\"`"
                        }
                      },
                      "required": [
                        "BrowserType",
                        "Version"
                      ]
                    }
                  }
                },
                "required": [
                  "Cores"
                ]
              },
              "example": {
                "Cores": [
                  {
                    "BrowserType": 1,
                    "Version": "124"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "成功。`data` 是对象，包含字段 `total`、`succeeded`、`failed`、`results`。",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer",
                      "description": "响应代码。`0`：全部成功；`-1`：部分成功；`-2`：全部失败"
                    },
                    "msg": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "请求级错误消息；正常执行通常为 `null`"
                    },
                    "data": {
                      "type": "object",
                      "properties": {
                        "total": {
                          "type": "integer",
                          "description": "请求任务总数"
                        },
                        "succeeded": {
                          "type": "integer",
                          "description": "成功数量（包括已安装）"
                        },
                        "failed": {
                          "type": "integer",
                          "description": "失败数量"
                        },
                        "results": {
                          "type": "array",
                          "description": "每个输入项对应的执行结果，顺序与请求一致",
                          "items": {
                            "type": "object",
                            "properties": {
                              "index": {
                                "type": "integer",
                                "description": "对应 `Cores` 中的下标（从 0 开始）"
                              },
                              "browserType": {
                                "type": [
                                  "integer",
                                  "null"
                                ],
                                "description": "浏览器类型"
                              },
                              "requestedVersion": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "description": "请求的主版本"
                              },
                              "resolvedVersion": {
                                "type": "string",
                                "description": "实际解析到的完整版本，成功或已解析元数据时返回"
                              },
                              "status": {
                                "type": "string",
                                "description": "任务状态：`installed`、`already_installed` 或 `failed`"
                              },
                              "source": {
                                "type": "string",
                                "description": "下载来源：`downloaded`、`already_installed` 或 `joined_in_flight`"
                              },
                              "errorCode": {
                                "type": "string",
                                "description": "任务失败时返回的稳定错误分类码"
                              },
                              "serverCode": {
                                "type": "integer",
                                "description": "可选。平台服务返回的原始业务错误码"
                              },
                              "msg": {
                                "type": "string",
                                "description": "展示消息，可能随客户端语言变化。不要用于程序化结果判断"
                              }
                            }
                          }
                        }
                      },
                      "required": [
                        "total",
                        "succeeded",
                        "failed",
                        "results"
                      ]
                    },
                    "requestId": {
                      "type": "string",
                      "description": "请求唯一标识；联系支持时请提供"
                    }
                  },
                  "required": [
                    "code",
                    "data"
                  ]
                },
                "example": {
                  "code": 0,
                  "msg": null,
                  "data": {
                    "total": 1,
                    "succeeded": 1,
                    "failed": 0,
                    "results": [
                      {
                        "index": 0,
                        "browserType": 1,
                        "requestedVersion": "124",
                        "resolvedVersion": "124.5",
                        "status": "installed",
                        "source": "downloaded",
                        "msg": "Download successful"
                      }
                    ]
                  }
                }
              }
            },
            "headers": {}
          }
        },
        "security": []
      }
    },
    "/api/cloudbrowser/start": {
      "post": {
        "summary": "启动云端运行环境",
        "description": "把浏览器环境作为云运行时启动。\n- **前置条件**：环境必须存在于你的团队，且不能是端到端加密或正在移交。**必须绑定代理**，且在受理启动前会检查其可达性。浏览器内核必须是云浏览器支持的，这排除了 Firefox。会校验团队的打开数量上限；在启用云浏览器计费的部署上还会检查 AI 额度余额。\n- **每个环境一个运行**：一名成员对同一环境只能持有一个活跃运行。团队启用安全锁时，其他成员的运行会阻塞你的启动。\n- **完成信号**：**已受理，未完成。** `data` 为空；运行时是异步开通的。轮询 `/cloudbrowser/page` 直到 `cloudBrowserStatus` 为 `RUNNING`，再调用 `/cloudbrowser/connect` 获取 `cdpUrl`。启动可能已被受理但随后失败，这会在该页面上体现。\n- **并发**：同一环境的并发启动由锁串行化；竞争失败的一方被拒绝，而不是排队。\n- **重试**：超时后请读取 `/cloudbrowser/page`——不要重发。\n\n已记录的业务错误码：`19039`, `19065`, `40001`, `40003`, `40015`, `40016`, `40021`, `40023`, `40024`, `40025`, `40026`, `40027`, `40028`, `40029`, `40037`。 各错误码的含义见 [Error Codes](../Getting%20Started/error-codes.md)。任何接口还可能返回通用错误码。",
        "operationId": "startCloudRuntimeLocal",
        "tags": [
          "Cloud Runtime"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CloudBrowserStartRequest"
              },
              "example": {
                "envId": "1800000000000001"
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/VoidDataResponse"
          }
        },
        "security": []
      }
    },
    "/api/cloudbrowser/stop": {
      "post": {
        "summary": "停止云端运行环境",
        "description": "停止浏览器所在的云端运行实例。\n\n- **前置条件**：该浏览器必须有一个由你启动的进行中运行实例。若实例已停止或正在释放，调用成功但不做任何事。\n- **副作用**：停止计费、结算用量、释放浏览器占用锁，并在释放实例前让客户端把 profile 和 Cookie 归档回云端。\n- **完成信号**：**已受理，未完成。** 请轮询 `/cloudbrowser/page` 直到 `cloudBrowserStatus` 为 `CLOSED` 且 `cloudBrowserArchiveStatus` 到达 `COMPLETED` 或 `FAILED`。\n- **归档失败时**：该运行实例仍在计费，且仍显示为 `RUNNING`。`force` **仅在这种状态下生效**：它跳过归档直接释放实例，代价是本次会话的 profile 变更会丢失。\n- **并发**：同一运行实例的并发停止会被串行化，重复调用是安全的。\n\n已记录的业务错误码：`40002`, `40006`, `40008`, `40020`。 各错误码的含义见 [Error Codes](../Getting%20Started/error-codes.md)。任何接口还可能返回通用错误码。",
        "operationId": "stopCloudRuntimeLocal",
        "tags": [
          "Cloud Runtime"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CloudBrowserStopRequest"
              },
              "example": {
                "envId": "1800000000000001",
                "force": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/VoidDataResponse"
          }
        },
        "security": []
      }
    },
    "/api/cloudbrowser/page": {
      "post": {
        "summary": "分页查询云端运行环境",
        "description": "列出浏览器，并附带调用成员的云端运行实例状态。\n\n- **副作用**：无。只读。可带退避安全重试。\n- **状态取值**：`cloudBrowserStatus` 只有 `STARTING`、`RUNNING`、`CLOSED` 三种。**`RUNNING` 不代表浏览器可用**——正在停止、正在归档、以及停止失败的实例也报 `RUNNING`。要区分它们请看 `cloudBrowserArchiveStatus`（`PENDING`、`ARCHIVING`、`COMPLETED`、`FAILED`），无活动时为 null。\n- **一致性**：运行态查询是全有或全无的。若整页无法解析，接口会直接失败而不是返回部分数据。",
        "operationId": "pageCloudRuntimesLocal",
        "tags": [
          "Cloud Runtime"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CloudBrowserPageRequest"
              },
              "example": {
                "pageNo": 1,
                "pageSize": 10,
                "keyword": "marketing"
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/CloudBrowserPageResponse"
          }
        },
        "security": []
      }
    },
    "/api/cloudbrowser/connect": {
      "post": {
        "summary": "连接云端运行环境",
        "description": "返回运行中云端实例的连接信息。\n\n- **前置条件**：运行实例必须**恰好处于** `RUNNING` 状态，且必须由你本人启动。正在停止或归档中的实例会被拒绝，即使 `/cloudbrowser/page` 仍显示 `RUNNING`。\n- **副作用**：签发一个新的桌面访问令牌，并把你记录为当前连接成员。\n- **重复调用**：返回的 `cdpUrl` 保持不变，已有的 CDP 会话继续可用；但每次调用都会签发新的桌面令牌并覆盖连接成员记录。**旧的桌面 URL 不会被吊销**，因此返回的每个 URL 都要当作有效凭据对待：不要记录、不要持久化。\n- **会话上限**：运行实例达到最长时长后会被自动停止，归档在此之前不久开始，所以长时间运行的自动化必须能处理实例消失。\n- **用途**：把 Puppeteer、Playwright 或 Selenium 连到 `cdpUrl`。\n\n已记录的业务错误码：`40008`, `40009`, `40010`。 各错误码的含义见 [Error Codes](../Getting%20Started/error-codes.md)。任何接口还可能返回通用错误码。",
        "operationId": "connectCloudRuntimeLocal",
        "tags": [
          "Cloud Runtime"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CloudBrowserConnectRequest"
              },
              "example": {
                "envId": "1800000000000001"
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/CloudBrowserConnectResponse"
          }
        },
        "security": []
      }
    }
  },
  "components": {
    "schemas": {
      "CreateEnvironmentRequest": {
        "allOf": [
          {
            "$ref": "#/components/schemas/EnvironmentBase"
          },
          {
            "type": "object",
            "required": [
              "browserTypeId",
              "operatorSystemId"
            ],
            "properties": {
              "proxy": {
                "type": "object",
                "properties": {
                  "proxyId": {
                    "description": "代理 ID",
                    "type": "string"
                  },
                  "proxyName": {
                    "description": "代理名称（最多 600 字符）",
                    "type": "string"
                  },
                  "proxyType": {
                    "description": "代理类型，0: http，1: https。当 proxyProvider 为 7/8 时不能为空",
                    "type": "integer"
                  },
                  "proxyProvider": {
                    "description": "代理类型 0: http, 1: https, 2: socks5, 3: ssh, 4: Oxylabs, 5: Proxys.io, 7: Luminati, 8: Lumauto, 9: Oxylabsauto, 10: Trojan, 11: Shadowsocks, 13: ABCPROXY, 14: LunaProxy, 15: IPHTML, 16: PiaProxy, 17: 922S5, 18: 360Proxy",
                    "type": "string"
                  },
                  "proxyIp": {
                    "description": "代理 IP。当 proxyProvider 为 16/17/18 时可为空；其他情况必填",
                    "type": "string"
                  },
                  "proxyPort": {
                    "description": "代理端口（仅允许 1-65535 的数字）。当 proxyProvider 为 16/17/18 时可为空；其他情况必填",
                    "type": "integer"
                  },
                  "username": {
                    "description": "用户名（最多 200 字符）",
                    "type": "string"
                  },
                  "password": {
                    "description": "密码（最多 100 字符）",
                    "type": "string"
                  },
                  "refreshUrl": {
                    "description": "刷新 URL",
                    "type": "string"
                  },
                  "country": {
                    "description": "国家代码（如 `us`）。可用取值见 [Country Time Zone Table](/api-reference/appendix/country-time-zone)。当 proxyProvider 为 16/17/18 时必填",
                    "type": "string"
                  },
                  "city": {
                    "description": "城市",
                    "type": "string"
                  },
                  "state": {
                    "description": "州/省",
                    "type": "string"
                  },
                  "encryptionType": {
                    "description": "加密方式。当 proxyProvider 为 11 时不能为空。1: aes-128-gcm, 2: aes-192-gcm, 3: aes-256-gcm, 4: aes-128-cfb, 5: aes-192-cfb, 6: aes-256-cfb, 7: aes-128-ctr, 8: aes-192-ctr, 9: aes-256-ctr, 10: rc4-md5, 11: chacha20-ietf, 12: xchacha20, 13: chacha20-ietf-poly1305, 14: xchacha20-ietf-poly1305",
                    "type": "integer"
                  },
                  "ipMonitor": {
                    "description": "是否开启 IP 变化监控？true：开启，false：关闭",
                    "type": "boolean"
                  },
                  "ipChangeAction": {
                    "description": "IP 变化监控动作：0：阻止访问，1：仅告警",
                    "type": "integer"
                  }
                },
                "description": "代理信息"
              }
            }
          }
        ]
      },
      "UpdateEnvironmentRequest": {
        "allOf": [
          {
            "$ref": "#/components/schemas/EnvironmentBase"
          },
          {
            "type": "object",
            "required": [
              "envId"
            ],
            "properties": {
              "envId": {
                "type": "string",
                "description": "环境 ID"
              }
            }
          }
        ]
      },
      "EnvironmentBase": {
        "type": "object",
        "properties": {
          "browserTypeId": {
            "type": "integer",
            "description": "浏览器类型 ID；1=Chrome，2=Firefox"
          },
          "operatorSystemId": {
            "type": "integer",
            "description": "操作系统类型 ID；1:Windows 2:macOS 3:Android 4:IOS 5:Linux"
          },
          "isEncrypt": {
            "type": "integer",
            "description": "是否加密该浏览器；0=否，1=是"
          },
          "startupParams": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "额外的浏览器启动参数"
          },
          "accountInfo": {
            "description": "账号信息",
            "$ref": "#/components/schemas/AccountInfo"
          },
          "advancedSetting": {
            "description": "浏览器指纹高级设置",
            "$ref": "#/components/schemas/AdvancedSetting"
          },
          "afterStartupConfig": {
            "description": "启动后的配置项",
            "$ref": "#/components/schemas/AfterStartupConfig"
          },
          "browserCore": {
            "type": "integer",
            "description": "内核版本；默认 0（自动匹配）。可用版本通过 `/api/env/advanced/ua/versions` 查询。"
          },
          "cookies": {
            "type": "string",
            "description": "预加载的 Cookie 字符串（可选）"
          },
          "envName": {
            "type": "string",
            "description": "环境名称"
          },
          "envRemark": {
            "type": "string",
            "description": "环境备注；最大长度：1500 字符"
          },
          "groupId": {
            "type": "string",
            "description": "环境分组 ID；默认：未分组（0）"
          },
          "groupName": {
            "type": "string",
            "maxLength": 50,
            "description": "分组名称（最多50个字符）。如果提供了该参数，系统会先检查 groupId：如果找到有效分组则使用该分组；否则按 groupName 查找。如果存在同名分组则引用该分组；如果不存在则新建分组。每个团队最多限制1000个分组。"
          },
          "proxyId": {
            "type": "string",
            "description": "代理 ID；默认：0"
          },
          "tagIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "标签 ID；默认：无"
          },
          "uaVersion": {
            "type": "integer",
            "description": "UA 预设版本；默认 0（全部）"
          },
          "disableAudio": {
            "type": "integer",
            "description": "禁用音频：0 = 关，1 = 开"
          },
          "disableImg": {
            "type": "integer",
            "description": "禁用图片加载：0 = 关，1 = 开"
          },
          "disableVideo": {
            "type": "integer",
            "description": "禁用视频加载：0 = 关，1 = 开"
          },
          "imgLimitSize": {
            "type": "integer",
            "description": "图片最大尺寸（KB）"
          }
        }
      },
      "AccountInfo": {
        "type": "object",
        "properties": {
          "customerUrl": {
            "type": "string",
            "description": "自定义平台 URL — 如果 platformId=9999，则为必填项，且必须是有效的 URL。"
          },
          "password": {
            "type": "string",
            "description": "密码；最大长度：50 个字符"
          },
          "platformId": {
            "type": "string",
            "description": "平台 ID；自定义 URL 使用 9999。请参阅 /api/system/platform/list。"
          },
          "siteId": {
            "type": "string",
            "description": "站点 ID；可通过“获取可配置平台”API（/api/system/platform/list）获取"
          },
          "username": {
            "type": "string",
            "maxLength": 64,
            "description": "用户名；最大长度：64 个字符"
          }
        }
      },
      "AdvancedSetting": {
        "type": "object",
        "description": "高级浏览器指纹和行为配置。",
        "properties": {
          "ua": {
            "type": "string",
            "description": "自定义用户代理 (UA) 浏览器。必须遵循标准 UA 格式。\n\n可通过“获取浏览器 UA”API 实现。\n\n"
          },
          "time_zone": {
            "description": "时区设置",
            "$ref": "#/components/schemas/TimeZoneConfig"
          },
          "web_rtc": {
            "description": "WebRTC 设置",
            "$ref": "#/components/schemas/WebRTCConfig"
          },
          "geo_location": {
            "description": "地理位置设置",
            "$ref": "#/components/schemas/GeoLocationConfig"
          },
          "language": {
            "description": "语言",
            "$ref": "#/components/schemas/LanguageConfig"
          },
          "resolution": {
            "description": "分辨率设置",
            "$ref": "#/components/schemas/ResolutionConfig"
          },
          "font": {
            "description": "字体设置",
            "$ref": "#/components/schemas/FontConfig"
          },
          "canvas": {
            "description": "Canvas 指纹设置",
            "$ref": "#/components/schemas/CanvasConfig"
          },
          "webgl_image": {
            "description": "WebGL 图像设置",
            "$ref": "#/components/schemas/WebGLImageConfig"
          },
          "webgl_metadata": {
            "description": "WebGL 元数据设置",
            "$ref": "#/components/schemas/WebGLMetadataConfig"
          },
          "audio_context": {
            "description": "AudioContext：1 = 噪声，2 = 真实",
            "$ref": "#/components/schemas/AudioContextConfig"
          },
          "media_device": {
            "description": "Media device：1 = 噪声，2 = 真实",
            "$ref": "#/components/schemas/MediaDeviceConfig"
          },
          "client_rects": {
            "description": "ClientRects：1 = 噪声，2 = 真实",
            "$ref": "#/components/schemas/ClientRectsConfig"
          },
          "speech_voise": {
            "description": "Speech voice：1 = 隐私，2 = 真实",
            "$ref": "#/components/schemas/SpeechVoiseConfig"
          },
          "hardware_concurrency": {
            "type": "integer",
            "description": "模拟的逻辑 CPU 核心数。\n\n默认值：4。可选值：0（实际值）、2、3、4、6、8、10、12。\n\n"
          },
          "memery_device": {
            "type": "integer",
            "description": "模拟设备内存（GB）。\n\n默认值：8。选项：0（实际）、2、4、6、8。\n\n"
          },
          "do_not_track": {
            "type": "integer",
            "description": "请勿追踪设置。默认值：2。1 = 开启，2 = 关闭。"
          },
          "bluetooth": {
            "description": "Bluetooth：1 = 隐私，2 = 真实",
            "$ref": "#/components/schemas/BluetoothConfig"
          },
          "battery": {
            "description": "Battery：1 = 隐私，2 = 真实",
            "$ref": "#/components/schemas/BatteryConfig"
          },
          "port_scan_protection": {
            "description": "端口扫描保护",
            "$ref": "#/components/schemas/PortScanProtectionConfig"
          },
          "os_version": {
            "type": "string",
            "description": "macOS 系统版本（例如，macOS 12、macOS 13、macOS 14）。"
          },
          "web_gpu": {
            "description": "WebGPU 设置",
            "$ref": "#/components/schemas/WebGPUConfig"
          },
          "ciphers": {
            "description": "加密套件配置",
            "$ref": "#/components/schemas/CiphersConfig"
          },
          "mobile_device": {
            "type": "string",
            "description": "手机型号 ID（字符串格式）。可通过“获取手机型号列表”API 获取。\n\n示例：“1826502391344832512”\n\n"
          }
        }
      },
      "TimeZoneConfig": {
        "type": "object",
        "properties": {
          "switcher": {
            "type": "integer",
            "description": "时区选项。默认值：1。1 = 匹配 IP，2 = 自定义。"
          },
          "value": {
            "type": "string",
            "description": "当 switcher=2 时为必填项。\n\n时区 ID 来自“获取时区和语言列表”API。\n\n"
          }
        }
      },
      "WebRTCConfig": {
        "type": "object",
        "properties": {
          "switcher": {
            "type": "integer",
            "description": "WebRTC策略。默认值：2。1 = 隐私模式，2 = 替换模式，3 = 真实模式，4 = 禁用模式，5 = 转发模式。\n\n"
          }
        }
      },
      "GeoLocationConfig": {
        "type": "object",
        "properties": {
          "switcher": {
            "type": "integer",
            "description": "地理位置策略。默认值：1。1 = 提示，2 = 禁用。"
          },
          "base_on_ip": {
            "type": "boolean",
            "description": "根据 IP 地址生成位置？默认值：true。true = 提示，false = 手动。"
          },
          "latitude": {
            "type": "number",
            "format": "float",
            "description": "纬度。如果 base_on_ip=false，则为必填项。"
          },
          "longitude": {
            "type": "number",
            "format": "float",
            "description": "经度。如果 base_on_ip=false，则为必填项。"
          },
          "accuracy": {
            "type": "number",
            "format": "float",
            "description": "精度单位为米。如果 base_on_ip=false，则为必填项。"
          }
        }
      },
      "LanguageConfig": {
        "type": "object",
        "properties": {
          "switcher": {
            "type": "integer",
            "description": "语言策略。默认值：1。1 = 匹配 IP，2 = 自定义。"
          },
          "value": {
            "type": "string",
            "description": "当 switcher=2 时为必填项。\n\n来自“获取时区和语言列表”API 的以逗号分隔的语言 ID。\n\n"
          }
        }
      },
      "ResolutionConfig": {
        "type": "object",
        "properties": {
          "switcher": {
            "type": "integer",
            "description": "分辨率策略。默认值：1。1 = 实际分辨率，2 = 自定义分辨率。"
          },
          "id": {
            "type": "string",
            "description": "当 switcher=2 时为必填项。\n\n从“获取分辨率列表”API 获取分辨率 ID。\n\n"
          }
        }
      },
      "FontConfig": {
        "type": "object",
        "properties": {
          "switcher": {
            "type": "integer",
            "description": "字体策略。默认值：1。1 = 真实字体，2 = 自定义字体。"
          },
          "value": {
            "type": "string",
            "description": "以逗号分隔的自定义字体名称（如果 switcher=2 则为必填项）。"
          }
        }
      },
      "CanvasConfig": {
        "type": "object",
        "properties": {
          "switcher": {
            "type": "integer",
            "description": "画布策略。默认值：1。1 = 噪声，2 = 真实。"
          }
        }
      },
      "WebGLImageConfig": {
        "type": "object",
        "properties": {
          "switcher": {
            "type": "integer",
            "description": "WebGL图像策略。默认值：1。1 = 噪声，2 = 真实。"
          }
        }
      },
      "WebGLMetadataConfig": {
        "type": "object",
        "properties": {
          "switcher": {
            "type": "integer",
            "description": "WebGL 元数据策略。默认值：3。1 = 实际，2 = 禁用硬件加速，3 = 自定义。"
          },
          "provider": {
            "type": "string",
            "description": "WebGL 渲染器品牌字符串（例如，“Google Inc.”）"
          },
          "render": {
            "type": "string",
            "description": "WebGL渲染器字符串（例如，“ANGLE (...)”）"
          }
        }
      },
      "AudioContextConfig": {
        "type": "object",
        "properties": {
          "switcher": {
            "type": "integer",
            "description": "AudioContext 策略。默认值：1。1 = 噪声，2 = 真实。"
          }
        }
      },
      "MediaDeviceConfig": {
        "type": "object",
        "properties": {
          "switcher": {
            "type": "integer",
            "description": "媒体设备策略。默认值：1。1 = 噪声，2 = 真实。"
          }
        }
      },
      "ClientRectsConfig": {
        "type": "object",
        "properties": {
          "switcher": {
            "type": "integer",
            "description": "ClientRects 策略。默认值：1。1 = 噪声，2 = 真实。"
          }
        }
      },
      "SpeechVoiseConfig": {
        "type": "object",
        "properties": {
          "switcher": {
            "type": "integer",
            "description": "SpeechVoices策略。默认值：1。1 = 隐私，2 = 真实"
          }
        }
      },
      "BluetoothConfig": {
        "type": "object",
        "properties": {
          "switcher": {
            "type": "integer",
            "description": "蓝牙策略。默认值：1。1 = 隐私，2 = 身份验证。"
          }
        }
      },
      "BatteryConfig": {
        "type": "object",
        "properties": {
          "switcher": {
            "type": "integer",
            "description": "电池策略。默认值：1。1 = 隐私，2 = 真实性。"
          }
        }
      },
      "PortScanProtectionConfig": {
        "type": "object",
        "properties": {
          "switcher": {
            "type": "integer",
            "description": "端口扫描保护。默认值：1。1 = 开启，2 = 关闭。"
          },
          "value": {
            "type": "string",
            "description": "允许本地网络端口连接（以逗号分隔）。"
          }
        }
      },
      "WebGPUConfig": {
        "type": "object",
        "properties": {
          "switcher": {
            "type": "integer",
            "description": "WebGPU策略。默认值：1。1 = 基于WebGL的匹配，2 = 启用，3 = 禁用。"
          }
        }
      },
      "AfterStartupConfig": {
        "type": "object",
        "properties": {
          "afterStartup": {
            "type": "integer",
            "format": "int32",
            "description": "启动后的操作。默认值：1。\n\n1 = 继续上一页，\n\n2 = 打开指定 URL，\n\n3 = 打开指定 URL 及平台，\n\n4 = 继续上一页及平台。\n\n"
          },
          "autoOpenUrls": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri"
            },
            "description": "要自动打开的有效 URL 列表（选项 2-3 需要）。"
          }
        }
      },
      "CiphersConfig": {
        "type": "object",
        "properties": {
          "switcher": {
            "type": "integer",
            "description": "TLS 加密策略。默认值：1。1 = 默认，2 = 自定义。"
          },
          "value": {
            "type": "string",
            "description": "当 switcher=2 时为必填项。\n\n以逗号分隔的要禁用的 TLS 协议列表（例如，“TLSv1,TLSv1.1”）。\n\n"
          }
        }
      },
      "BrowserPhoneList": {
        "type": "object",
        "properties": {
          "code": {
            "description": "返回结果代码 0：正常；其他代码均为例外情况。",
            "type": "integer"
          },
          "msg": {
            "description": "错误信息",
            "type": [
              "string",
              "null"
            ]
          },
          "data": {
            "description": "响应数据",
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "resolution": {
                  "type": "string"
                },
                "os": {
                  "type": "integer"
                },
                "platform": {
                  "type": "string"
                }
              }
            }
          },
          "requestId": {
            "description": "操作请求 ID",
            "type": "string"
          }
        },
        "required": [
          "code",
          "msg",
          "data",
          "requestId"
        ]
      },
      "EnvironmentId": {
        "type": "string",
        "pattern": "^[1-9]\\d*$",
        "description": "Browser profile (environment) ID. Serialized as a decimal string to avoid JavaScript\nprecision loss on 64-bit integers.\n",
        "example": "1800000000000001"
      },
      "CloudBrowserStartRequest": {
        "type": "object",
        "properties": {
          "envId": {
            "$ref": "#/components/schemas/EnvironmentId"
          }
        },
        "required": [
          "envId"
        ]
      },
      "ApiResponseBase": {
        "type": "object",
        "properties": {
          "code": {
            "type": "integer",
            "description": "Return result code. `0` means success; other codes indicate exceptions.",
            "example": 0
          },
          "msg": {
            "type": [
              "string",
              "null"
            ],
            "description": "Error message. Usually `null` on success.",
            "example": null
          },
          "requestId": {
            "type": "string",
            "description": "Operation request ID. This field may be present when the request passes through the API gateway.",
            "example": "1d4f3ea968664593860b94b35d4ebf5e"
          }
        },
        "required": [
          "code",
          "msg"
        ]
      },
      "CloudBrowserStopRequest": {
        "type": "object",
        "properties": {
          "envId": {
            "$ref": "#/components/schemas/EnvironmentId"
          },
          "force": {
            "type": "boolean",
            "description": "Whether to forcibly release the cloud runtime. Only takes effect when the current run has\nan archive status of `FAILED`; in that case the archive step is skipped and runtime\nresources are reclaimed. Ignored in all other cases.\n",
            "default": false,
            "example": false
          }
        },
        "required": [
          "envId"
        ]
      },
      "CloudBrowserPageRequest": {
        "type": "object",
        "properties": {
          "uniqueIds": {
            "type": "array",
            "description": "Environment sequence numbers. Up to 100 items.",
            "maxItems": 100,
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "example": [
              1001,
              1002
            ]
          },
          "envId": {
            "allOf": [
              {
                "$ref": "#/components/schemas/EnvironmentId"
              }
            ],
            "description": "Environment ID. The request also accepts the field alias `id`."
          },
          "envName": {
            "type": "string",
            "description": "Environment name.",
            "example": "marketing-01"
          },
          "keyword": {
            "type": "string",
            "description": "Keyword filter. Matches environment name, group name, tag name, and remark.",
            "example": "marketing"
          },
          "groupId": {
            "type": "string",
            "pattern": "^\\d+$",
            "description": "Group ID. `0` means ungrouped.",
            "example": "0"
          },
          "pageNo": {
            "type": "integer",
            "format": "int64",
            "description": "Current page number, starting from 1. Default is 1.",
            "minimum": 1,
            "default": 1,
            "example": 1
          },
          "pageSize": {
            "type": "integer",
            "format": "int64",
            "description": "Number of items per page. Default is 10, maximum 100.",
            "minimum": 1,
            "maximum": 100,
            "default": 10,
            "example": 10
          }
        },
        "required": [
          "pageNo",
          "pageSize"
        ]
      },
      "CloudBrowserStatus": {
        "type": "string",
        "description": "Cloud runtime status:\n- `STARTING` — starting up\n- `RUNNING` — running and ready to connect\n- `CLOSED` — not started, closed, or failed to start\n",
        "enum": [
          "STARTING",
          "RUNNING",
          "CLOSED"
        ],
        "example": "RUNNING"
      },
      "CloudBrowserArchiveStatus": {
        "type": [
          "string",
          "null"
        ],
        "description": "Archive status of the current cloud run. `null` when there is no active run record:\n- `PENDING` — pending archive\n- `ARCHIVING` — archiving\n- `COMPLETED` — archive completed\n- `FAILED` — archive failed\n",
        "enum": [
          "PENDING",
          "ARCHIVING",
          "COMPLETED",
          "FAILED",
          null
        ],
        "example": null
      },
      "CloudBrowserPageItem": {
        "type": "object",
        "properties": {
          "id": {
            "$ref": "#/components/schemas/EnvironmentId"
          },
          "envName": {
            "type": "string",
            "description": "Environment name.",
            "example": "marketing-01"
          },
          "proxyId": {
            "type": [
              "string",
              "null"
            ],
            "pattern": "^\\d+$",
            "description": "Proxy ID currently bound to the profile. `null` when no proxy is configured.",
            "example": "1800000000000101"
          },
          "cloudBrowserStatus": {
            "$ref": "#/components/schemas/CloudBrowserStatus"
          },
          "cloudBrowserArchiveStatus": {
            "$ref": "#/components/schemas/CloudBrowserArchiveStatus"
          },
          "startDate": {
            "type": [
              "string",
              "null"
            ],
            "pattern": "^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}$",
            "description": "Cloud runtime start time. `null` while starting, or when not started or closed.",
            "example": "2026-01-15 10:30:00"
          }
        },
        "required": [
          "id",
          "envName",
          "cloudBrowserStatus"
        ]
      },
      "CloudBrowserPageData": {
        "type": "object",
        "properties": {
          "total": {
            "type": "string",
            "pattern": "^\\d+$",
            "description": "Total number of records.",
            "example": "42"
          },
          "current": {
            "type": "string",
            "pattern": "^\\d+$",
            "description": "Current page number.",
            "example": "1"
          },
          "pages": {
            "type": "string",
            "pattern": "^\\d+$",
            "description": "Total number of pages.",
            "example": "5"
          },
          "dataList": {
            "type": "array",
            "description": "Environments on the current page. Empty array when there are no results.",
            "items": {
              "$ref": "#/components/schemas/CloudBrowserPageItem"
            }
          }
        },
        "required": [
          "total",
          "current",
          "pages",
          "dataList"
        ]
      },
      "CloudBrowserConnectRequest": {
        "type": "object",
        "properties": {
          "envId": {
            "$ref": "#/components/schemas/EnvironmentId"
          }
        },
        "required": [
          "envId"
        ]
      },
      "CloudBrowserConnectResult": {
        "type": "object",
        "properties": {
          "cdpUrl": {
            "type": "string",
            "description": "Full CDP (Chrome DevTools Protocol) address including the access `token` parameter. Pass this\nURL to an automation framework such as Puppeteer, Playwright, or Selenium to attach to the\nremote browser.\n",
            "example": "https://runtime1.morelogin.com:16167?token=c62fedaaac524e41a0f02fc4345d41cb"
          },
          "accessUrl": {
            "type": [
              "string",
              "null"
            ],
            "description": "Cloud browser page wrapper address. Open it in a browser to view and control the cloud\nbrowser desktop. `null` when the page wrapper is not configured.\n\nThe `token` parameter is a Base64-encoded payload carrying the desktop URL, desktop token,\nexpiry, and team, user, member, and environment IDs. The `envName` and `lang` parameters set\nthe displayed environment name and interface language.\n",
            "example": "https://official-website.morelogin.com/browser-remote?token=eyJkZXNrdG9wVXJsIjoi...ZW52SWQiOiIyMDczMzk1NDg5NzM4OTE5OTM2In0%3D&envName=P-1267&lang=en-US"
          }
        },
        "required": [
          "cdpUrl"
        ]
      }
    },
    "responses": {
      "VoidDataResponse": {
        "description": "Success",
        "content": {
          "application/json": {
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/ApiResponseBase"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "null",
                      "example": null
                    }
                  }
                }
              ]
            }
          }
        }
      },
      "CloudBrowserPageResponse": {
        "description": "Success",
        "content": {
          "application/json": {
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/ApiResponseBase"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CloudBrowserPageData"
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              ]
            }
          }
        }
      },
      "CloudBrowserConnectResponse": {
        "description": "Success",
        "content": {
          "application/json": {
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/ApiResponseBase"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/CloudBrowserConnectResult"
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              ]
            },
            "example": {
              "code": 0,
              "msg": null,
              "data": {
                "cdpUrl": "https://runtime1.morelogin.com:16167?token=c62fedaaac524e41a0f02fc4345d41cb",
                "accessUrl": "https://official-website.morelogin.com/browser-remote?token=eyJkZXNrdG9wVXJsIjoi...ZW52SWQiOiIyMDczMzk1NDg5NzM4OTE5OTM2In0%3D&envName=P-1267&lang=en-US"
              },
              "requestId": "1d4f3ea968664593860b94b35d4ebf5e"
            }
          }
        }
      }
    }
  }
}